#!/usr/bin/env python

import io
import cv2
import json
import rospy
import threading
import numpy as np
from PIL import Image, ImageDraw, ImageFont
from std_msgs.msg import String, Float32
from sensor_msgs.msg import CompressedImage


def temp_correct(t_surface, tambient):
    if t_surface <= 25:
        t_low = 32.66 + 0.186 * (tambient - 25)
        t_high = 34.84 + 0.148 * (tambient - 25)
    if t_surface > 25:
        t_low = 32.66 + 0.086 * (tambient - 25)
        t_high = 34.84 + 0.100 * (tambient - 25)
    if t_low <= t_surface <= t_high:
        t_body = 36.3 + 0.5 / (t_high - t_low) * (t_surface - t_low)
    if t_surface > t_high:
        t_body = 36.8 + (0.829320618 + 0.002364434 * tambient) * (t_surface - t_high)
    if t_surface < t_low:
        t_body = 36.3 + (0.551658273 + 0.021525068 * tambient) * (t_surface - t_low)

    return t_body


def cv2_to_pub(img_r, fmt):
    img_str= np.array(cv2.imencode('.jpg', img_r)[1]).tostring()
    jpeg_img = CompressedImage()
    jpeg_img.header.stamp = rospy.Time.now()
    jpeg_img.format = fmt
    jpeg_img.data = img_str

    return jpeg_img


class Mlx90640_rec(threading.Thread):
    def __init__(self):
        self.low_temp_list = []
        self.high_temp_list = []
        self.mlx614_temp_list = []
        self.NUM = 50

        rospy.Subscriber("esp_data", String, self.callback)
        # rospy.Subscriber("/esp_file_data", CompressedImage, self.cam_callback)

        self.mlx614_temp_pub = rospy.Publisher("mlx90614_temp", Float32, queue_size=1)
        # self.spo_pub = rospy.Publisher("spo2", Float32, queue_size=1)
        # self.hr_pub = rospy.Publisher("heart_rate", Float32, queue_size=1)
        self.max30102_pub = rospy.Publisher("temp_spo2_hr", String, queue_size=1)
        self.infr_ther_img_pub = rospy.Publisher("infr_ther_image", CompressedImage, queue_size=1)

    def get_color_table(self, idx):
        """
        Args:
            idx: index of color tables
                0 常规灰度编码,
                1 逆灰度编码,
                2 红色饱和度编码,
                3 绿色饱和度编码,
                4 蓝色饱和度编码,
                5 黄色饱和度编码,
                6 青色饱和度编码,
                7 紫色饱和度编码,
                8 彩虹编码 1,
                9 彩虹编码 2,
                10 热金属编码 1,
                11 热金属编码 2,

        Returns:
            a color table

        """
        color_tables = [
            # 常规灰度编码
            [
                [0, 0, 0, 0], [1, 1, 1, 0], [2, 2, 2, 0], [3, 3, 3, 0],  # 4
                [4, 4, 4, 0], [5, 5, 5, 0], [6, 6, 6, 0], [7, 7, 7, 0],  # 8
                [8, 8, 8, 0], [9, 9, 9, 0], [10, 10, 10, 0], [11, 11, 11, 0],  # 12
                [12, 12, 12, 0], [13, 13, 13, 0], [14, 14, 14, 0], [15, 15, 15, 0],  # 16
                [16, 16, 16, 0], [17, 17, 17, 0], [18, 18, 18, 0], [19, 19, 19, 0],  # 20
                [20, 20, 20, 0], [21, 21, 21, 0], [22, 22, 22, 0], [23, 23, 23, 0],  # 24
                [24, 24, 24, 0], [25, 25, 25, 0], [26, 26, 26, 0], [27, 27, 27, 0],  # 28
                [28, 28, 28, 0], [29, 29, 29, 0], [30, 30, 30, 0], [31, 31, 31, 0],  # 32
                [32, 32, 32, 0], [33, 33, 33, 0], [34, 34, 34, 0], [35, 35, 35, 0],  # 36
                [36, 36, 36, 0], [37, 37, 37, 0], [38, 38, 38, 0], [39, 39, 39, 0],  # 40
                [40, 40, 40, 0], [41, 41, 41, 0], [42, 42, 42, 0], [43, 43, 43, 0],  # 44
                [44, 44, 44, 0], [45, 45, 45, 0], [46, 46, 46, 0], [47, 47, 47, 0],  # 48
                [48, 48, 48, 0], [49, 49, 49, 0], [50, 50, 50, 0], [51, 51, 51, 0],  # 52
                [52, 52, 52, 0], [53, 53, 53, 0], [54, 54, 54, 0], [55, 55, 55, 0],  # 56
                [56, 56, 56, 0], [57, 57, 57, 0], [58, 58, 58, 0], [59, 59, 59, 0],  # 60
                [60, 60, 60, 0], [61, 61, 61, 0], [62, 62, 62, 0], [63, 63, 63, 0],  # 64
                [64, 64, 64, 0], [65, 65, 65, 0], [66, 66, 66, 0], [67, 67, 67, 0],  # 68
                [68, 68, 68, 0], [69, 69, 69, 0], [70, 70, 70, 0], [71, 71, 71, 0],  # 72
                [72, 72, 72, 0], [73, 73, 73, 0], [74, 74, 74, 0], [75, 75, 75, 0],  # 76
                [76, 76, 76, 0], [77, 77, 77, 0], [78, 78, 78, 0], [79, 79, 79, 0],  # 80
                [80, 80, 80, 0], [81, 81, 81, 0], [82, 82, 82, 0], [83, 83, 83, 0],  # 84
                [84, 84, 84, 0], [85, 85, 85, 0], [86, 86, 86, 0], [87, 87, 87, 0],  # 88
                [88, 88, 88, 0], [89, 89, 89, 0], [90, 90, 90, 0], [91, 91, 91, 0],  # 92
                [92, 92, 92, 0], [93, 93, 93, 0], [94, 94, 94, 0], [95, 95, 95, 0],  # 96
                [96, 96, 96, 0], [97, 97, 97, 0], [98, 98, 98, 0], [99, 99, 99, 0],  # 100
                [100, 100, 100, 0], [101, 101, 101, 0], [102, 102, 102, 0], [103, 103, 103, 0],  # 104
                [104, 104, 104, 0], [105, 105, 105, 0], [106, 106, 106, 0], [107, 107, 107, 0],  # 108
                [108, 108, 108, 0], [109, 109, 109, 0], [110, 110, 110, 0], [111, 111, 111, 0],  # 112
                [112, 112, 112, 0], [113, 113, 113, 0], [114, 114, 114, 0], [115, 115, 115, 0],  # 116
                [116, 116, 116, 0], [117, 117, 117, 0], [118, 118, 118, 0], [119, 119, 119, 0],  # 120
                [120, 120, 120, 0], [121, 121, 121, 0], [122, 122, 122, 0], [123, 123, 123, 0],  # 124
                [124, 124, 124, 0], [125, 125, 125, 0], [126, 126, 126, 0], [127, 127, 127, 0],  # 128
                [128, 128, 128, 0], [129, 129, 129, 0], [130, 130, 130, 0], [131, 131, 131, 0],  # 132
                [132, 132, 132, 0], [133, 133, 133, 0], [134, 134, 134, 0], [135, 135, 135, 0],  # 136
                [136, 136, 136, 0], [137, 137, 137, 0], [138, 138, 138, 0], [139, 139, 139, 0],  # 140
                [140, 140, 140, 0], [141, 141, 141, 0], [142, 142, 142, 0], [143, 143, 143, 0],  # 144
                [144, 144, 144, 0], [145, 145, 145, 0], [146, 146, 146, 0], [147, 147, 147, 0],  # 148
                [148, 148, 148, 0], [149, 149, 149, 0], [150, 150, 150, 0], [151, 151, 151, 0],  # 152
                [152, 152, 152, 0], [153, 153, 153, 0], [154, 154, 154, 0], [155, 155, 155, 0],  # 156
                [156, 156, 156, 0], [157, 157, 157, 0], [158, 158, 158, 0], [159, 159, 159, 0],  # 160
                [160, 160, 160, 0], [161, 161, 161, 0], [162, 162, 162, 0], [163, 163, 163, 0],  # 164
                [164, 164, 164, 0], [165, 165, 165, 0], [166, 166, 166, 0], [167, 167, 167, 0],  # 168
                [168, 168, 168, 0], [169, 169, 169, 0], [170, 170, 170, 0], [171, 171, 171, 0],  # 172
                [172, 172, 172, 0], [173, 173, 173, 0], [174, 174, 174, 0], [175, 175, 175, 0],  # 176
                [176, 176, 176, 0], [177, 177, 177, 0], [178, 178, 178, 0], [179, 179, 179, 0],  # 180
                [180, 180, 180, 0], [181, 181, 181, 0], [182, 182, 182, 0], [183, 183, 183, 0],  # 184
                [184, 184, 184, 0], [185, 185, 185, 0], [186, 186, 186, 0], [187, 187, 187, 0],  # 188
                [188, 188, 188, 0], [189, 189, 189, 0], [190, 190, 190, 0], [191, 191, 191, 0],  # 192
                [192, 192, 192, 0], [193, 193, 193, 0], [194, 194, 194, 0], [195, 195, 195, 0],  # 196
                [196, 196, 196, 0], [197, 197, 197, 0], [198, 198, 198, 0], [199, 199, 199, 0],  # 200
                [200, 200, 200, 0], [201, 201, 201, 0], [202, 202, 202, 0], [203, 203, 203, 0],  # 204
                [204, 204, 204, 0], [205, 205, 205, 0], [206, 206, 206, 0], [207, 207, 207, 0],  # 208
                [208, 208, 208, 0], [209, 209, 209, 0], [210, 210, 210, 0], [211, 211, 211, 0],  # 212
                [212, 212, 212, 0], [213, 213, 213, 0], [214, 214, 214, 0], [215, 215, 215, 0],  # 216
                [216, 216, 216, 0], [217, 217, 217, 0], [218, 218, 218, 0], [219, 219, 219, 0],  # 220
                [220, 220, 220, 0], [221, 221, 221, 0], [222, 222, 222, 0], [223, 223, 223, 0],  # 224
                [224, 224, 224, 0], [225, 225, 225, 0], [226, 226, 226, 0], [227, 227, 227, 0],  # 228
                [228, 228, 228, 0], [229, 229, 229, 0], [230, 230, 230, 0], [231, 231, 231, 0],  # 232
                [232, 232, 232, 0], [233, 233, 233, 0], [234, 234, 234, 0], [235, 235, 235, 0],  # 236
                [236, 236, 236, 0], [237, 237, 237, 0], [238, 238, 238, 0], [239, 239, 239, 0],  # 240
                [240, 240, 240, 0], [241, 241, 241, 0], [242, 242, 242, 0], [243, 243, 243, 0],  # 244
                [244, 244, 244, 0], [245, 245, 245, 0], [246, 246, 246, 0], [247, 247, 247, 0],  # 248
                [248, 248, 248, 0], [249, 249, 249, 0], [250, 250, 250, 0], [251, 251, 251, 0],  # 252
                [252, 252, 252, 0], [253, 253, 253, 0], [254, 254, 254, 0], [255, 255, 255, 0],  # 256
            ],
            # 逆灰度编码
            [
                [255, 255, 255, 0], [254, 254, 254, 0], [253, 253, 253, 0], [252, 252, 252, 0],  # 4
                [251, 251, 251, 0], [250, 250, 250, 0], [249, 249, 249, 0], [248, 248, 248, 0],  # 8
                [247, 247, 247, 0], [246, 246, 246, 0], [245, 245, 245, 0], [244, 244, 244, 0],  # 12
                [243, 243, 243, 0], [242, 242, 242, 0], [241, 241, 241, 0], [240, 240, 240, 0],  # 16
                [239, 239, 239, 0], [238, 238, 238, 0], [237, 237, 237, 0], [236, 236, 236, 0],  # 20
                [235, 235, 235, 0], [234, 234, 234, 0], [233, 233, 233, 0], [232, 232, 232, 0],  # 24
                [231, 231, 231, 0], [230, 230, 230, 0], [229, 229, 229, 0], [228, 228, 228, 0],  # 28
                [227, 227, 227, 0], [226, 226, 226, 0], [225, 225, 225, 0], [224, 224, 224, 0],  # 32
                [223, 223, 223, 0], [222, 222, 222, 0], [221, 221, 221, 0], [220, 220, 220, 0],  # 36
                [219, 219, 219, 0], [218, 218, 218, 0], [217, 217, 217, 0], [216, 216, 216, 0],  # 40
                [215, 215, 215, 0], [214, 214, 214, 0], [213, 213, 213, 0], [212, 212, 212, 0],  # 44
                [211, 211, 211, 0], [210, 210, 210, 0], [209, 209, 209, 0], [208, 208, 208, 0],  # 48
                [207, 207, 207, 0], [206, 206, 206, 0], [205, 205, 205, 0], [204, 204, 204, 0],  # 52
                [203, 203, 203, 0], [202, 202, 202, 0], [201, 201, 201, 0], [200, 200, 200, 0],  # 56
                [199, 199, 199, 0], [198, 198, 198, 0], [197, 197, 197, 0], [196, 196, 196, 0],  # 60
                [195, 195, 195, 0], [194, 194, 194, 0], [193, 193, 193, 0], [192, 192, 192, 0],  # 64
                [191, 191, 191, 0], [190, 190, 190, 0], [189, 189, 189, 0], [188, 188, 188, 0],  # 68
                [187, 187, 187, 0], [186, 186, 186, 0], [185, 185, 185, 0], [184, 184, 184, 0],  # 72
                [183, 183, 183, 0], [182, 182, 182, 0], [181, 181, 181, 0], [180, 180, 180, 0],  # 76
                [179, 179, 179, 0], [178, 178, 178, 0], [177, 177, 177, 0], [176, 176, 176, 0],  # 80
                [175, 175, 175, 0], [174, 174, 174, 0], [173, 173, 173, 0], [172, 172, 172, 0],  # 84
                [171, 171, 171, 0], [170, 170, 170, 0], [169, 169, 169, 0], [168, 168, 168, 0],  # 88
                [167, 167, 167, 0], [166, 166, 166, 0], [165, 165, 165, 0], [164, 164, 164, 0],  # 92
                [163, 163, 163, 0], [162, 162, 162, 0], [161, 161, 161, 0], [160, 160, 160, 0],  # 96
                [159, 159, 159, 0], [158, 158, 158, 0], [157, 157, 157, 0], [156, 156, 156, 0],  # 100
                [155, 155, 155, 0], [154, 154, 154, 0], [153, 153, 153, 0], [152, 152, 152, 0],  # 104
                [151, 151, 151, 0], [150, 150, 150, 0], [149, 149, 149, 0], [148, 148, 148, 0],  # 108
                [147, 147, 147, 0], [146, 146, 146, 0], [145, 145, 145, 0], [144, 144, 144, 0],  # 112
                [143, 143, 143, 0], [142, 142, 142, 0], [141, 141, 141, 0], [140, 140, 140, 0],  # 116
                [139, 139, 139, 0], [138, 138, 138, 0], [137, 137, 137, 0], [136, 136, 136, 0],  # 120
                [135, 135, 135, 0], [134, 134, 134, 0], [133, 133, 133, 0], [132, 132, 132, 0],  # 124
                [131, 131, 131, 0], [130, 130, 130, 0], [129, 129, 129, 0], [128, 128, 128, 0],  # 128
                [127, 127, 127, 0], [126, 126, 126, 0], [125, 125, 125, 0], [124, 124, 124, 0],  # 132
                [123, 123, 123, 0], [122, 122, 122, 0], [121, 121, 121, 0], [120, 120, 120, 0],  # 136
                [119, 119, 119, 0], [118, 118, 118, 0], [117, 117, 117, 0], [116, 116, 116, 0],  # 140
                [115, 115, 115, 0], [114, 114, 114, 0], [113, 113, 113, 0], [112, 112, 112, 0],  # 144
                [111, 111, 111, 0], [110, 110, 110, 0], [109, 109, 109, 0], [108, 108, 108, 0],  # 148
                [107, 107, 107, 0], [106, 106, 106, 0], [105, 105, 105, 0], [104, 104, 104, 0],  # 152
                [103, 103, 103, 0], [102, 102, 102, 0], [101, 101, 101, 0], [100, 100, 100, 0],  # 156
                [99, 99, 99, 0], [98, 98, 98, 0], [97, 97, 97, 0], [96, 96, 96, 0],  # 160
                [95, 95, 95, 0], [94, 94, 94, 0], [93, 93, 93, 0], [92, 92, 92, 0],  # 164
                [91, 91, 91, 0], [90, 90, 90, 0], [89, 89, 89, 0], [88, 88, 88, 0],  # 168
                [87, 87, 87, 0], [86, 86, 86, 0], [85, 85, 85, 0], [84, 84, 84, 0],  # 172
                [83, 83, 83, 0], [82, 82, 82, 0], [81, 81, 81, 0], [80, 80, 80, 0],  # 176
                [79, 79, 79, 0], [78, 78, 78, 0], [77, 77, 77, 0], [76, 76, 76, 0],  # 180
                [75, 75, 75, 0], [74, 74, 74, 0], [73, 73, 73, 0], [72, 72, 72, 0],  # 184
                [71, 71, 71, 0], [70, 70, 70, 0], [69, 69, 69, 0], [68, 68, 68, 0],  # 188
                [67, 67, 67, 0], [66, 66, 66, 0], [65, 65, 65, 0], [64, 64, 64, 0],  # 192
                [63, 63, 63, 0], [62, 62, 62, 0], [61, 61, 61, 0], [60, 60, 60, 0],  # 196
                [59, 59, 59, 0], [58, 58, 58, 0], [57, 57, 57, 0], [56, 56, 56, 0],  # 200
                [55, 55, 55, 0], [54, 54, 54, 0], [53, 53, 53, 0], [52, 52, 52, 0],  # 204
                [51, 51, 51, 0], [50, 50, 50, 0], [49, 49, 49, 0], [48, 48, 48, 0],  # 208
                [47, 47, 47, 0], [46, 46, 46, 0], [45, 45, 45, 0], [44, 44, 44, 0],  # 212
                [43, 43, 43, 0], [42, 42, 42, 0], [41, 41, 41, 0], [40, 40, 40, 0],  # 216
                [39, 39, 39, 0], [38, 38, 38, 0], [37, 37, 37, 0], [36, 36, 36, 0],  # 220
                [35, 35, 35, 0], [34, 34, 34, 0], [33, 33, 33, 0], [32, 32, 32, 0],  # 224
                [31, 31, 31, 0], [30, 30, 30, 0], [29, 29, 29, 0], [28, 28, 28, 0],  # 228
                [27, 27, 27, 0], [26, 26, 26, 0], [25, 25, 25, 0], [24, 24, 24, 0],  # 232
                [23, 23, 23, 0], [22, 22, 22, 0], [21, 21, 21, 0], [20, 20, 20, 0],  # 236
                [19, 19, 19, 0], [18, 18, 18, 0], [17, 17, 17, 0], [16, 16, 16, 0],  # 240
                [15, 15, 15, 0], [14, 14, 14, 0], [13, 13, 13, 0], [12, 12, 12, 0],  # 244
                [11, 11, 11, 0], [10, 10, 10, 0], [9, 9, 9, 0], [8, 8, 8, 0],  # 248
                [7, 7, 7, 0], [6, 6, 6, 0], [5, 5, 5, 0], [4, 4, 4, 0],  # 252
                [3, 3, 3, 0], [2, 2, 2, 0], [1, 1, 1, 0], [0, 0, 0, 0],  # 256
            ],
            # 红色饱和度编码
            [
                [0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],  # 4
                [4, 0, 0, 0], [5, 0, 0, 0], [6, 0, 0, 0], [7, 0, 0, 0],  # 8
                [8, 0, 0, 0], [9, 0, 0, 0], [10, 0, 0, 0], [11, 0, 0, 0],  # 12
                [12, 0, 0, 0], [13, 0, 0, 0], [14, 0, 0, 0], [15, 0, 0, 0],  # 16
                [16, 0, 0, 0], [17, 0, 0, 0], [18, 0, 0, 0], [19, 0, 0, 0],  # 20
                [20, 0, 0, 0], [21, 0, 0, 0], [22, 0, 0, 0], [23, 0, 0, 0],  # 24
                [24, 0, 0, 0], [25, 0, 0, 0], [26, 0, 0, 0], [27, 0, 0, 0],  # 28
                [28, 0, 0, 0], [29, 0, 0, 0], [30, 0, 0, 0], [31, 0, 0, 0],  # 32
                [32, 0, 0, 0], [33, 0, 0, 0], [34, 0, 0, 0], [35, 0, 0, 0],  # 36
                [36, 0, 0, 0], [37, 0, 0, 0], [38, 0, 0, 0], [39, 0, 0, 0],  # 40
                [40, 0, 0, 0], [41, 0, 0, 0], [42, 0, 0, 0], [43, 0, 0, 0],  # 44
                [44, 0, 0, 0], [45, 0, 0, 0], [46, 0, 0, 0], [47, 0, 0, 0],  # 48
                [48, 0, 0, 0], [49, 0, 0, 0], [50, 0, 0, 0], [51, 0, 0, 0],  # 52
                [52, 0, 0, 0], [53, 0, 0, 0], [54, 0, 0, 0], [55, 0, 0, 0],  # 56
                [56, 0, 0, 0], [57, 0, 0, 0], [58, 0, 0, 0], [59, 0, 0, 0],  # 60
                [60, 0, 0, 0], [61, 0, 0, 0], [62, 0, 0, 0], [63, 0, 0, 0],  # 64
                [64, 0, 0, 0], [65, 0, 0, 0], [66, 0, 0, 0], [67, 0, 0, 0],  # 68
                [68, 0, 0, 0], [69, 0, 0, 0], [70, 0, 0, 0], [71, 0, 0, 0],  # 72
                [72, 0, 0, 0], [73, 0, 0, 0], [74, 0, 0, 0], [75, 0, 0, 0],  # 76
                [76, 0, 0, 0], [77, 0, 0, 0], [78, 0, 0, 0], [79, 0, 0, 0],  # 80
                [80, 0, 0, 0], [81, 0, 0, 0], [82, 0, 0, 0], [83, 0, 0, 0],  # 84
                [84, 0, 0, 0], [85, 0, 0, 0], [86, 0, 0, 0], [87, 0, 0, 0],  # 88
                [88, 0, 0, 0], [89, 0, 0, 0], [90, 0, 0, 0], [91, 0, 0, 0],  # 92
                [92, 0, 0, 0], [93, 0, 0, 0], [94, 0, 0, 0], [95, 0, 0, 0],  # 96
                [96, 0, 0, 0], [97, 0, 0, 0], [98, 0, 0, 0], [99, 0, 0, 0],  # 100
                [100, 0, 0, 0], [101, 0, 0, 0], [102, 0, 0, 0], [103, 0, 0, 0],  # 104
                [104, 0, 0, 0], [105, 0, 0, 0], [106, 0, 0, 0], [107, 0, 0, 0],  # 108
                [108, 0, 0, 0], [109, 0, 0, 0], [110, 0, 0, 0], [111, 0, 0, 0],  # 112
                [112, 0, 0, 0], [113, 0, 0, 0], [114, 0, 0, 0], [115, 0, 0, 0],  # 116
                [116, 0, 0, 0], [117, 0, 0, 0], [118, 0, 0, 0], [119, 0, 0, 0],  # 120
                [120, 0, 0, 0], [121, 0, 0, 0], [122, 0, 0, 0], [123, 0, 0, 0],  # 124
                [124, 0, 0, 0], [125, 0, 0, 0], [126, 0, 0, 0], [127, 0, 0, 0],  # 128
                [128, 0, 0, 0], [129, 0, 0, 0], [130, 0, 0, 0], [131, 0, 0, 0],  # 132
                [132, 0, 0, 0], [133, 0, 0, 0], [134, 0, 0, 0], [135, 0, 0, 0],  # 136
                [136, 0, 0, 0], [137, 0, 0, 0], [138, 0, 0, 0], [139, 0, 0, 0],  # 140
                [140, 0, 0, 0], [141, 0, 0, 0], [142, 0, 0, 0], [143, 0, 0, 0],  # 144
                [144, 0, 0, 0], [145, 0, 0, 0], [146, 0, 0, 0], [147, 0, 0, 0],  # 148
                [148, 0, 0, 0], [149, 0, 0, 0], [150, 0, 0, 0], [151, 0, 0, 0],  # 152
                [152, 0, 0, 0], [153, 0, 0, 0], [154, 0, 0, 0], [155, 0, 0, 0],  # 156
                [156, 0, 0, 0], [157, 0, 0, 0], [158, 0, 0, 0], [159, 0, 0, 0],  # 160
                [160, 0, 0, 0], [161, 0, 0, 0], [162, 0, 0, 0], [163, 0, 0, 0],  # 164
                [164, 0, 0, 0], [165, 0, 0, 0], [166, 0, 0, 0], [167, 0, 0, 0],  # 168
                [168, 0, 0, 0], [169, 0, 0, 0], [170, 0, 0, 0], [171, 0, 0, 0],  # 172
                [172, 0, 0, 0], [173, 0, 0, 0], [174, 0, 0, 0], [175, 0, 0, 0],  # 176
                [176, 0, 0, 0], [177, 0, 0, 0], [178, 0, 0, 0], [179, 0, 0, 0],  # 180
                [180, 0, 0, 0], [181, 0, 0, 0], [182, 0, 0, 0], [183, 0, 0, 0],  # 184
                [184, 0, 0, 0], [185, 0, 0, 0], [186, 0, 0, 0], [187, 0, 0, 0],  # 188
                [188, 0, 0, 0], [189, 0, 0, 0], [190, 0, 0, 0], [191, 0, 0, 0],  # 192
                [192, 0, 0, 0], [193, 0, 0, 0], [194, 0, 0, 0], [195, 0, 0, 0],  # 196
                [196, 0, 0, 0], [197, 0, 0, 0], [198, 0, 0, 0], [199, 0, 0, 0],  # 200
                [200, 0, 0, 0], [201, 0, 0, 0], [202, 0, 0, 0], [203, 0, 0, 0],  # 204
                [204, 0, 0, 0], [205, 0, 0, 0], [206, 0, 0, 0], [207, 0, 0, 0],  # 208
                [208, 0, 0, 0], [209, 0, 0, 0], [210, 0, 0, 0], [211, 0, 0, 0],  # 212
                [212, 0, 0, 0], [213, 0, 0, 0], [214, 0, 0, 0], [215, 0, 0, 0],  # 216
                [216, 0, 0, 0], [217, 0, 0, 0], [218, 0, 0, 0], [219, 0, 0, 0],  # 220
                [220, 0, 0, 0], [221, 0, 0, 0], [222, 0, 0, 0], [223, 0, 0, 0],  # 224
                [224, 0, 0, 0], [225, 0, 0, 0], [226, 0, 0, 0], [227, 0, 0, 0],  # 228
                [228, 0, 0, 0], [229, 0, 0, 0], [230, 0, 0, 0], [231, 0, 0, 0],  # 232
                [232, 0, 0, 0], [233, 0, 0, 0], [234, 0, 0, 0], [235, 0, 0, 0],  # 236
                [236, 0, 0, 0], [237, 0, 0, 0], [238, 0, 0, 0], [239, 0, 0, 0],  # 240
                [240, 0, 0, 0], [241, 0, 0, 0], [242, 0, 0, 0], [243, 0, 0, 0],  # 244
                [244, 0, 0, 0], [245, 0, 0, 0], [246, 0, 0, 0], [247, 0, 0, 0],  # 248
                [248, 0, 0, 0], [249, 0, 0, 0], [250, 0, 0, 0], [251, 0, 0, 0],  # 252
                [252, 0, 0, 0], [253, 0, 0, 0], [254, 0, 0, 0], [255, 0, 0, 0],  # 256
            ],
            # 绿色饱和度编码
            [
                [0, 0, 0, 0], [0, 1, 0, 0], [0, 2, 0, 0], [0, 3, 0, 0],  # 4
                [0, 4, 0, 0], [0, 5, 0, 0], [0, 6, 0, 0], [0, 7, 0, 0],  # 8
                [0, 8, 0, 0], [0, 9, 0, 0], [0, 10, 0, 0], [0, 11, 0, 0],  # 12
                [0, 12, 0, 0], [0, 13, 0, 0], [0, 14, 0, 0], [0, 15, 0, 0],  # 16
                [0, 16, 0, 0], [0, 17, 0, 0], [0, 18, 0, 0], [0, 19, 0, 0],  # 20
                [0, 20, 0, 0], [0, 21, 0, 0], [0, 22, 0, 0], [0, 23, 0, 0],  # 24
                [0, 24, 0, 0], [0, 25, 0, 0], [0, 26, 0, 0], [0, 27, 0, 0],  # 28
                [0, 28, 0, 0], [0, 29, 0, 0], [0, 30, 0, 0], [0, 31, 0, 0],  # 32
                [0, 32, 0, 0], [0, 33, 0, 0], [0, 34, 0, 0], [0, 35, 0, 0],  # 36
                [0, 36, 0, 0], [0, 37, 0, 0], [0, 38, 0, 0], [0, 39, 0, 0],  # 40
                [0, 40, 0, 0], [0, 41, 0, 0], [0, 42, 0, 0], [0, 43, 0, 0],  # 44
                [0, 44, 0, 0], [0, 45, 0, 0], [0, 46, 0, 0], [0, 47, 0, 0],  # 48
                [0, 48, 0, 0], [0, 49, 0, 0], [0, 50, 0, 0], [0, 51, 0, 0],  # 52
                [0, 52, 0, 0], [0, 53, 0, 0], [0, 54, 0, 0], [0, 55, 0, 0],  # 56
                [0, 56, 0, 0], [0, 57, 0, 0], [0, 58, 0, 0], [0, 59, 0, 0],  # 60
                [0, 60, 0, 0], [0, 61, 0, 0], [0, 62, 0, 0], [0, 63, 0, 0],  # 64
                [0, 64, 0, 0], [0, 65, 0, 0], [0, 66, 0, 0], [0, 67, 0, 0],  # 68
                [0, 68, 0, 0], [0, 69, 0, 0], [0, 70, 0, 0], [0, 71, 0, 0],  # 72
                [0, 72, 0, 0], [0, 73, 0, 0], [0, 74, 0, 0], [0, 75, 0, 0],  # 76
                [0, 76, 0, 0], [0, 77, 0, 0], [0, 78, 0, 0], [0, 79, 0, 0],  # 80
                [0, 80, 0, 0], [0, 81, 0, 0], [0, 82, 0, 0], [0, 83, 0, 0],  # 84
                [0, 84, 0, 0], [0, 85, 0, 0], [0, 86, 0, 0], [0, 87, 0, 0],  # 88
                [0, 88, 0, 0], [0, 89, 0, 0], [0, 90, 0, 0], [0, 91, 0, 0],  # 92
                [0, 92, 0, 0], [0, 93, 0, 0], [0, 94, 0, 0], [0, 95, 0, 0],  # 96
                [0, 96, 0, 0], [0, 97, 0, 0], [0, 98, 0, 0], [0, 99, 0, 0],  # 100
                [0, 100, 0, 0], [0, 101, 0, 0], [0, 102, 0, 0], [0, 103, 0, 0],  # 104
                [0, 104, 0, 0], [0, 105, 0, 0], [0, 106, 0, 0], [0, 107, 0, 0],  # 108
                [0, 108, 0, 0], [0, 109, 0, 0], [0, 110, 0, 0], [0, 111, 0, 0],  # 112
                [0, 112, 0, 0], [0, 113, 0, 0], [0, 114, 0, 0], [0, 115, 0, 0],  # 116
                [0, 116, 0, 0], [0, 117, 0, 0], [0, 118, 0, 0], [0, 119, 0, 0],  # 120
                [0, 120, 0, 0], [0, 121, 0, 0], [0, 122, 0, 0], [0, 123, 0, 0],  # 124
                [0, 124, 0, 0], [0, 125, 0, 0], [0, 126, 0, 0], [0, 127, 0, 0],  # 128
                [0, 128, 0, 0], [0, 129, 0, 0], [0, 130, 0, 0], [0, 131, 0, 0],  # 132
                [0, 132, 0, 0], [0, 133, 0, 0], [0, 134, 0, 0], [0, 135, 0, 0],  # 136
                [0, 136, 0, 0], [0, 137, 0, 0], [0, 138, 0, 0], [0, 139, 0, 0],  # 140
                [0, 140, 0, 0], [0, 141, 0, 0], [0, 142, 0, 0], [0, 143, 0, 0],  # 144
                [0, 144, 0, 0], [0, 145, 0, 0], [0, 146, 0, 0], [0, 147, 0, 0],  # 148
                [0, 148, 0, 0], [0, 149, 0, 0], [0, 150, 0, 0], [0, 151, 0, 0],  # 152
                [0, 152, 0, 0], [0, 153, 0, 0], [0, 154, 0, 0], [0, 155, 0, 0],  # 156
                [0, 156, 0, 0], [0, 157, 0, 0], [0, 158, 0, 0], [0, 159, 0, 0],  # 160
                [0, 160, 0, 0], [0, 161, 0, 0], [0, 162, 0, 0], [0, 163, 0, 0],  # 164
                [0, 164, 0, 0], [0, 165, 0, 0], [0, 166, 0, 0], [0, 167, 0, 0],  # 168
                [0, 168, 0, 0], [0, 169, 0, 0], [0, 170, 0, 0], [0, 171, 0, 0],  # 172
                [0, 172, 0, 0], [0, 173, 0, 0], [0, 174, 0, 0], [0, 175, 0, 0],  # 176
                [0, 176, 0, 0], [0, 177, 0, 0], [0, 178, 0, 0], [0, 179, 0, 0],  # 180
                [0, 180, 0, 0], [0, 181, 0, 0], [0, 182, 0, 0], [0, 183, 0, 0],  # 184
                [0, 184, 0, 0], [0, 185, 0, 0], [0, 186, 0, 0], [0, 187, 0, 0],  # 188
                [0, 188, 0, 0], [0, 189, 0, 0], [0, 190, 0, 0], [0, 191, 0, 0],  # 192
                [0, 192, 0, 0], [0, 193, 0, 0], [0, 194, 0, 0], [0, 195, 0, 0],  # 196
                [0, 196, 0, 0], [0, 197, 0, 0], [0, 198, 0, 0], [0, 199, 0, 0],  # 200
                [0, 200, 0, 0], [0, 201, 0, 0], [0, 202, 0, 0], [0, 203, 0, 0],  # 204
                [0, 204, 0, 0], [0, 205, 0, 0], [0, 206, 0, 0], [0, 207, 0, 0],  # 208
                [0, 208, 0, 0], [0, 209, 0, 0], [0, 210, 0, 0], [0, 211, 0, 0],  # 212
                [0, 212, 0, 0], [0, 213, 0, 0], [0, 214, 0, 0], [0, 215, 0, 0],  # 216
                [0, 216, 0, 0], [0, 217, 0, 0], [0, 218, 0, 0], [0, 219, 0, 0],  # 220
                [0, 220, 0, 0], [0, 221, 0, 0], [0, 222, 0, 0], [0, 223, 0, 0],  # 224
                [0, 224, 0, 0], [0, 225, 0, 0], [0, 226, 0, 0], [0, 227, 0, 0],  # 228
                [0, 228, 0, 0], [0, 229, 0, 0], [0, 230, 0, 0], [0, 231, 0, 0],  # 232
                [0, 232, 0, 0], [0, 233, 0, 0], [0, 234, 0, 0], [0, 235, 0, 0],  # 236
                [0, 236, 0, 0], [0, 237, 0, 0], [0, 238, 0, 0], [0, 239, 0, 0],  # 240
                [0, 240, 0, 0], [0, 241, 0, 0], [0, 242, 0, 0], [0, 243, 0, 0],  # 244
                [0, 244, 0, 0], [0, 245, 0, 0], [0, 246, 0, 0], [0, 247, 0, 0],  # 248
                [0, 248, 0, 0], [0, 249, 0, 0], [0, 250, 0, 0], [0, 251, 0, 0],  # 252
                [0, 252, 0, 0], [0, 253, 0, 0], [0, 254, 0, 0], [0, 255, 0, 0],  # 256
            ],
            # 蓝色饱和度编码
            [
                [0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 2, 0], [0, 0, 3, 0],  # 4
                [0, 0, 4, 0], [0, 0, 5, 0], [0, 0, 6, 0], [0, 0, 7, 0],  # 8
                [0, 0, 8, 0], [0, 0, 9, 0], [0, 0, 10, 0], [0, 0, 11, 0],  # 12
                [0, 0, 12, 0], [0, 0, 13, 0], [0, 0, 14, 0], [0, 0, 15, 0],  # 16
                [0, 0, 16, 0], [0, 0, 17, 0], [0, 0, 18, 0], [0, 0, 19, 0],  # 20
                [0, 0, 20, 0], [0, 0, 21, 0], [0, 0, 22, 0], [0, 0, 23, 0],  # 24
                [0, 0, 24, 0], [0, 0, 25, 0], [0, 0, 26, 0], [0, 0, 27, 0],  # 28
                [0, 0, 28, 0], [0, 0, 29, 0], [0, 0, 30, 0], [0, 0, 31, 0],  # 32
                [0, 0, 32, 0], [0, 0, 33, 0], [0, 0, 34, 0], [0, 0, 35, 0],  # 36
                [0, 0, 36, 0], [0, 0, 37, 0], [0, 0, 38, 0], [0, 0, 39, 0],  # 40
                [0, 0, 40, 0], [0, 0, 41, 0], [0, 0, 42, 0], [0, 0, 43, 0],  # 44
                [0, 0, 44, 0], [0, 0, 45, 0], [0, 0, 46, 0], [0, 0, 47, 0],  # 48
                [0, 0, 48, 0], [0, 0, 49, 0], [0, 0, 50, 0], [0, 0, 51, 0],  # 52
                [0, 0, 52, 0], [0, 0, 53, 0], [0, 0, 54, 0], [0, 0, 55, 0],  # 56
                [0, 0, 56, 0], [0, 0, 57, 0], [0, 0, 58, 0], [0, 0, 59, 0],  # 60
                [0, 0, 60, 0], [0, 0, 61, 0], [0, 0, 62, 0], [0, 0, 63, 0],  # 64
                [0, 0, 64, 0], [0, 0, 65, 0], [0, 0, 66, 0], [0, 0, 67, 0],  # 68
                [0, 0, 68, 0], [0, 0, 69, 0], [0, 0, 70, 0], [0, 0, 71, 0],  # 72
                [0, 0, 72, 0], [0, 0, 73, 0], [0, 0, 74, 0], [0, 0, 75, 0],  # 76
                [0, 0, 76, 0], [0, 0, 77, 0], [0, 0, 78, 0], [0, 0, 79, 0],  # 80
                [0, 0, 80, 0], [0, 0, 81, 0], [0, 0, 82, 0], [0, 0, 83, 0],  # 84
                [0, 0, 84, 0], [0, 0, 85, 0], [0, 0, 86, 0], [0, 0, 87, 0],  # 88
                [0, 0, 88, 0], [0, 0, 89, 0], [0, 0, 90, 0], [0, 0, 91, 0],  # 92
                [0, 0, 92, 0], [0, 0, 93, 0], [0, 0, 94, 0], [0, 0, 95, 0],  # 96
                [0, 0, 96, 0], [0, 0, 97, 0], [0, 0, 98, 0], [0, 0, 99, 0],  # 100
                [0, 0, 100, 0], [0, 0, 101, 0], [0, 0, 102, 0], [0, 0, 103, 0],  # 104
                [0, 0, 104, 0], [0, 0, 105, 0], [0, 0, 106, 0], [0, 0, 107, 0],  # 108
                [0, 0, 108, 0], [0, 0, 109, 0], [0, 0, 110, 0], [0, 0, 111, 0],  # 112
                [0, 0, 112, 0], [0, 0, 113, 0], [0, 0, 114, 0], [0, 0, 115, 0],  # 116
                [0, 0, 116, 0], [0, 0, 117, 0], [0, 0, 118, 0], [0, 0, 119, 0],  # 120
                [0, 0, 120, 0], [0, 0, 121, 0], [0, 0, 122, 0], [0, 0, 123, 0],  # 124
                [0, 0, 124, 0], [0, 0, 125, 0], [0, 0, 126, 0], [0, 0, 127, 0],  # 128
                [0, 0, 128, 0], [0, 0, 129, 0], [0, 0, 130, 0], [0, 0, 131, 0],  # 132
                [0, 0, 132, 0], [0, 0, 133, 0], [0, 0, 134, 0], [0, 0, 135, 0],  # 136
                [0, 0, 136, 0], [0, 0, 137, 0], [0, 0, 138, 0], [0, 0, 139, 0],  # 140
                [0, 0, 140, 0], [0, 0, 141, 0], [0, 0, 142, 0], [0, 0, 143, 0],  # 144
                [0, 0, 144, 0], [0, 0, 145, 0], [0, 0, 146, 0], [0, 0, 147, 0],  # 148
                [0, 0, 148, 0], [0, 0, 149, 0], [0, 0, 150, 0], [0, 0, 151, 0],  # 152
                [0, 0, 152, 0], [0, 0, 153, 0], [0, 0, 154, 0], [0, 0, 155, 0],  # 156
                [0, 0, 156, 0], [0, 0, 157, 0], [0, 0, 158, 0], [0, 0, 159, 0],  # 160
                [0, 0, 160, 0], [0, 0, 161, 0], [0, 0, 162, 0], [0, 0, 163, 0],  # 164
                [0, 0, 164, 0], [0, 0, 165, 0], [0, 0, 166, 0], [0, 0, 167, 0],  # 168
                [0, 0, 168, 0], [0, 0, 169, 0], [0, 0, 170, 0], [0, 0, 171, 0],  # 172
                [0, 0, 172, 0], [0, 0, 173, 0], [0, 0, 174, 0], [0, 0, 175, 0],  # 176
                [0, 0, 176, 0], [0, 0, 177, 0], [0, 0, 178, 0], [0, 0, 179, 0],  # 180
                [0, 0, 180, 0], [0, 0, 181, 0], [0, 0, 182, 0], [0, 0, 183, 0],  # 184
                [0, 0, 184, 0], [0, 0, 185, 0], [0, 0, 186, 0], [0, 0, 187, 0],  # 188
                [0, 0, 188, 0], [0, 0, 189, 0], [0, 0, 190, 0], [0, 0, 191, 0],  # 192
                [0, 0, 192, 0], [0, 0, 193, 0], [0, 0, 194, 0], [0, 0, 195, 0],  # 196
                [0, 0, 196, 0], [0, 0, 197, 0], [0, 0, 198, 0], [0, 0, 199, 0],  # 200
                [0, 0, 200, 0], [0, 0, 201, 0], [0, 0, 202, 0], [0, 0, 203, 0],  # 204
                [0, 0, 204, 0], [0, 0, 205, 0], [0, 0, 206, 0], [0, 0, 207, 0],  # 208
                [0, 0, 208, 0], [0, 0, 209, 0], [0, 0, 210, 0], [0, 0, 211, 0],  # 212
                [0, 0, 212, 0], [0, 0, 213, 0], [0, 0, 214, 0], [0, 0, 215, 0],  # 216
                [0, 0, 216, 0], [0, 0, 217, 0], [0, 0, 218, 0], [0, 0, 219, 0],  # 220
                [0, 0, 220, 0], [0, 0, 221, 0], [0, 0, 222, 0], [0, 0, 223, 0],  # 224
                [0, 0, 224, 0], [0, 0, 225, 0], [0, 0, 226, 0], [0, 0, 227, 0],  # 228
                [0, 0, 228, 0], [0, 0, 229, 0], [0, 0, 230, 0], [0, 0, 231, 0],  # 232
                [0, 0, 232, 0], [0, 0, 233, 0], [0, 0, 234, 0], [0, 0, 235, 0],  # 236
                [0, 0, 236, 0], [0, 0, 237, 0], [0, 0, 238, 0], [0, 0, 239, 0],  # 240
                [0, 0, 240, 0], [0, 0, 241, 0], [0, 0, 242, 0], [0, 0, 243, 0],  # 244
                [0, 0, 244, 0], [0, 0, 245, 0], [0, 0, 246, 0], [0, 0, 247, 0],  # 248
                [0, 0, 248, 0], [0, 0, 249, 0], [0, 0, 250, 0], [0, 0, 251, 0],  # 252
                [0, 0, 252, 0], [0, 0, 253, 0], [0, 0, 254, 0], [0, 0, 255, 0],  # 256
            ],
            # 黄色饱和度编码
            [
                [0, 0, 0, 0], [1, 1, 0, 0], [2, 2, 0, 0], [3, 3, 0, 0],  # 4
                [4, 4, 0, 0], [5, 5, 0, 0], [6, 6, 0, 0], [7, 7, 0, 0],  # 8
                [8, 8, 0, 0], [9, 9, 0, 0], [10, 10, 0, 0], [11, 11, 0, 0],  # 12
                [12, 12, 0, 0], [13, 13, 0, 0], [14, 14, 0, 0], [15, 15, 0, 0],  # 16
                [16, 16, 0, 0], [17, 17, 0, 0], [18, 18, 0, 0], [19, 19, 0, 0],  # 20
                [20, 20, 0, 0], [21, 21, 0, 0], [22, 22, 0, 0], [23, 23, 0, 0],  # 24
                [24, 24, 0, 0], [25, 25, 0, 0], [26, 26, 0, 0], [27, 27, 0, 0],  # 28
                [28, 28, 0, 0], [29, 29, 0, 0], [30, 30, 0, 0], [31, 31, 0, 0],  # 32
                [32, 32, 0, 0], [33, 33, 0, 0], [34, 34, 0, 0], [35, 35, 0, 0],  # 36
                [36, 36, 0, 0], [37, 37, 0, 0], [38, 38, 0, 0], [39, 39, 0, 0],  # 40
                [40, 40, 0, 0], [41, 41, 0, 0], [42, 42, 0, 0], [43, 43, 0, 0],  # 44
                [44, 44, 0, 0], [45, 45, 0, 0], [46, 46, 0, 0], [47, 47, 0, 0],  # 48
                [48, 48, 0, 0], [49, 49, 0, 0], [50, 50, 0, 0], [51, 51, 0, 0],  # 52
                [52, 52, 0, 0], [53, 53, 0, 0], [54, 54, 0, 0], [55, 55, 0, 0],  # 56
                [56, 56, 0, 0], [57, 57, 0, 0], [58, 58, 0, 0], [59, 59, 0, 0],  # 60
                [60, 60, 0, 0], [61, 61, 0, 0], [62, 62, 0, 0], [63, 63, 0, 0],  # 64
                [64, 64, 0, 0], [65, 65, 0, 0], [66, 66, 0, 0], [67, 67, 0, 0],  # 68
                [68, 68, 0, 0], [69, 69, 0, 0], [70, 70, 0, 0], [71, 71, 0, 0],  # 72
                [72, 72, 0, 0], [73, 73, 0, 0], [74, 74, 0, 0], [75, 75, 0, 0],  # 76
                [76, 76, 0, 0], [77, 77, 0, 0], [78, 78, 0, 0], [79, 79, 0, 0],  # 80
                [80, 80, 0, 0], [81, 81, 0, 0], [82, 82, 0, 0], [83, 83, 0, 0],  # 84
                [84, 84, 0, 0], [85, 85, 0, 0], [86, 86, 0, 0], [87, 87, 0, 0],  # 88
                [88, 88, 0, 0], [89, 89, 0, 0], [90, 90, 0, 0], [91, 91, 0, 0],  # 92
                [92, 92, 0, 0], [93, 93, 0, 0], [94, 94, 0, 0], [95, 95, 0, 0],  # 96
                [96, 96, 0, 0], [97, 97, 0, 0], [98, 98, 0, 0], [99, 99, 0, 0],  # 100
                [100, 100, 0, 0], [101, 101, 0, 0], [102, 102, 0, 0], [103, 103, 0, 0],  # 104
                [104, 104, 0, 0], [105, 105, 0, 0], [106, 106, 0, 0], [107, 107, 0, 0],  # 108
                [108, 108, 0, 0], [109, 109, 0, 0], [110, 110, 0, 0], [111, 111, 0, 0],  # 112
                [112, 112, 0, 0], [113, 113, 0, 0], [114, 114, 0, 0], [115, 115, 0, 0],  # 116
                [116, 116, 0, 0], [117, 117, 0, 0], [118, 118, 0, 0], [119, 119, 0, 0],  # 120
                [120, 120, 0, 0], [121, 121, 0, 0], [122, 122, 0, 0], [123, 123, 0, 0],  # 124
                [124, 124, 0, 0], [125, 125, 0, 0], [126, 126, 0, 0], [127, 127, 0, 0],  # 128
                [128, 128, 0, 0], [129, 129, 0, 0], [130, 130, 0, 0], [131, 131, 0, 0],  # 132
                [132, 132, 0, 0], [133, 133, 0, 0], [134, 134, 0, 0], [135, 135, 0, 0],  # 136
                [136, 136, 0, 0], [137, 137, 0, 0], [138, 138, 0, 0], [139, 139, 0, 0],  # 140
                [140, 140, 0, 0], [141, 141, 0, 0], [142, 142, 0, 0], [143, 143, 0, 0],  # 144
                [144, 144, 0, 0], [145, 145, 0, 0], [146, 146, 0, 0], [147, 147, 0, 0],  # 148
                [148, 148, 0, 0], [149, 149, 0, 0], [150, 150, 0, 0], [151, 151, 0, 0],  # 152
                [152, 152, 0, 0], [153, 153, 0, 0], [154, 154, 0, 0], [155, 155, 0, 0],  # 156
                [156, 156, 0, 0], [157, 157, 0, 0], [158, 158, 0, 0], [159, 159, 0, 0],  # 160
                [160, 160, 0, 0], [161, 161, 0, 0], [162, 162, 0, 0], [163, 163, 0, 0],  # 164
                [164, 164, 0, 0], [165, 165, 0, 0], [166, 166, 0, 0], [167, 167, 0, 0],  # 168
                [168, 168, 0, 0], [169, 169, 0, 0], [170, 170, 0, 0], [171, 171, 0, 0],  # 172
                [172, 172, 0, 0], [173, 173, 0, 0], [174, 174, 0, 0], [175, 175, 0, 0],  # 176
                [176, 176, 0, 0], [177, 177, 0, 0], [178, 178, 0, 0], [179, 179, 0, 0],  # 180
                [180, 180, 0, 0], [181, 181, 0, 0], [182, 182, 0, 0], [183, 183, 0, 0],  # 184
                [184, 184, 0, 0], [185, 185, 0, 0], [186, 186, 0, 0], [187, 187, 0, 0],  # 188
                [188, 188, 0, 0], [189, 189, 0, 0], [190, 190, 0, 0], [191, 191, 0, 0],  # 192
                [192, 192, 0, 0], [193, 193, 0, 0], [194, 194, 0, 0], [195, 195, 0, 0],  # 196
                [196, 196, 0, 0], [197, 197, 0, 0], [198, 198, 0, 0], [199, 199, 0, 0],  # 200
                [200, 200, 0, 0], [201, 201, 0, 0], [202, 202, 0, 0], [203, 203, 0, 0],  # 204
                [204, 204, 0, 0], [205, 205, 0, 0], [206, 206, 0, 0], [207, 207, 0, 0],  # 208
                [208, 208, 0, 0], [209, 209, 0, 0], [210, 210, 0, 0], [211, 211, 0, 0],  # 212
                [212, 212, 0, 0], [213, 213, 0, 0], [214, 214, 0, 0], [215, 215, 0, 0],  # 216
                [216, 216, 0, 0], [217, 217, 0, 0], [218, 218, 0, 0], [219, 219, 0, 0],  # 220
                [220, 220, 0, 0], [221, 221, 0, 0], [222, 222, 0, 0], [223, 223, 0, 0],  # 224
                [224, 224, 0, 0], [225, 225, 0, 0], [226, 226, 0, 0], [227, 227, 0, 0],  # 228
                [228, 228, 0, 0], [229, 229, 0, 0], [230, 230, 0, 0], [231, 231, 0, 0],  # 232
                [232, 232, 0, 0], [233, 233, 0, 0], [234, 234, 0, 0], [235, 235, 0, 0],  # 236
                [236, 236, 0, 0], [237, 237, 0, 0], [238, 238, 0, 0], [239, 239, 0, 0],  # 240
                [240, 240, 0, 0], [241, 241, 0, 0], [242, 242, 0, 0], [243, 243, 0, 0],  # 244
                [244, 244, 0, 0], [245, 245, 0, 0], [246, 246, 0, 0], [247, 247, 0, 0],  # 248
                [248, 248, 0, 0], [249, 249, 0, 0], [250, 250, 0, 0], [251, 251, 0, 0],  # 252
                [252, 252, 0, 0], [253, 253, 0, 0], [254, 254, 0, 0], [255, 255, 0, 0],  # 256
            ],
            # 青色饱和度编码
            [
                [0, 0, 0, 0], [0, 1, 1, 0], [0, 2, 2, 0], [0, 3, 3, 0],  # 4
                [0, 4, 4, 0], [0, 5, 5, 0], [0, 6, 6, 0], [0, 7, 7, 0],  # 8
                [0, 8, 8, 0], [0, 9, 9, 0], [0, 10, 10, 0], [0, 11, 11, 0],  # 12
                [0, 12, 12, 0], [0, 13, 13, 0], [0, 14, 14, 0], [0, 15, 15, 0],  # 16
                [0, 16, 16, 0], [0, 17, 17, 0], [0, 18, 18, 0], [0, 19, 19, 0],  # 20
                [0, 20, 20, 0], [0, 21, 21, 0], [0, 22, 22, 0], [0, 23, 23, 0],  # 24
                [0, 24, 24, 0], [0, 25, 25, 0], [0, 26, 26, 0], [0, 27, 27, 0],  # 28
                [0, 28, 28, 0], [0, 29, 29, 0], [0, 30, 30, 0], [0, 31, 31, 0],  # 32
                [0, 32, 32, 0], [0, 33, 33, 0], [0, 34, 34, 0], [0, 35, 35, 0],  # 36
                [0, 36, 36, 0], [0, 37, 37, 0], [0, 38, 38, 0], [0, 39, 39, 0],  # 40
                [0, 40, 40, 0], [0, 41, 41, 0], [0, 42, 42, 0], [0, 43, 43, 0],  # 44
                [0, 44, 44, 0], [0, 45, 45, 0], [0, 46, 46, 0], [0, 47, 47, 0],  # 48
                [0, 48, 48, 0], [0, 49, 49, 0], [0, 50, 50, 0], [0, 51, 51, 0],  # 52
                [0, 52, 52, 0], [0, 53, 53, 0], [0, 54, 54, 0], [0, 55, 55, 0],  # 56
                [0, 56, 56, 0], [0, 57, 57, 0], [0, 58, 58, 0], [0, 59, 59, 0],  # 60
                [0, 60, 60, 0], [0, 61, 61, 0], [0, 62, 62, 0], [0, 63, 63, 0],  # 64
                [0, 64, 64, 0], [0, 65, 65, 0], [0, 66, 66, 0], [0, 67, 67, 0],  # 68
                [0, 68, 68, 0], [0, 69, 69, 0], [0, 70, 70, 0], [0, 71, 71, 0],  # 72
                [0, 72, 72, 0], [0, 73, 73, 0], [0, 74, 74, 0], [0, 75, 75, 0],  # 76
                [0, 76, 76, 0], [0, 77, 77, 0], [0, 78, 78, 0], [0, 79, 79, 0],  # 80
                [0, 80, 80, 0], [0, 81, 81, 0], [0, 82, 82, 0], [0, 83, 83, 0],  # 84
                [0, 84, 84, 0], [0, 85, 85, 0], [0, 86, 86, 0], [0, 87, 87, 0],  # 88
                [0, 88, 88, 0], [0, 89, 89, 0], [0, 90, 90, 0], [0, 91, 91, 0],  # 92
                [0, 92, 92, 0], [0, 93, 93, 0], [0, 94, 94, 0], [0, 95, 95, 0],  # 96
                [0, 96, 96, 0], [0, 97, 97, 0], [0, 98, 98, 0], [0, 99, 99, 0],  # 100
                [0, 100, 100, 0], [0, 101, 101, 0], [0, 102, 102, 0], [0, 103, 103, 0],  # 104
                [0, 104, 104, 0], [0, 105, 105, 0], [0, 106, 106, 0], [0, 107, 107, 0],  # 108
                [0, 108, 108, 0], [0, 109, 109, 0], [0, 110, 110, 0], [0, 111, 111, 0],  # 112
                [0, 112, 112, 0], [0, 113, 113, 0], [0, 114, 114, 0], [0, 115, 115, 0],  # 116
                [0, 116, 116, 0], [0, 117, 117, 0], [0, 118, 118, 0], [0, 119, 119, 0],  # 120
                [0, 120, 120, 0], [0, 121, 121, 0], [0, 122, 122, 0], [0, 123, 123, 0],  # 124
                [0, 124, 124, 0], [0, 125, 125, 0], [0, 126, 126, 0], [0, 127, 127, 0],  # 128
                [0, 128, 128, 0], [0, 129, 129, 0], [0, 130, 130, 0], [0, 131, 131, 0],  # 132
                [0, 132, 132, 0], [0, 133, 133, 0], [0, 134, 134, 0], [0, 135, 135, 0],  # 136
                [0, 136, 136, 0], [0, 137, 137, 0], [0, 138, 138, 0], [0, 139, 139, 0],  # 140
                [0, 140, 140, 0], [0, 141, 141, 0], [0, 142, 142, 0], [0, 143, 143, 0],  # 144
                [0, 144, 144, 0], [0, 145, 145, 0], [0, 146, 146, 0], [0, 147, 147, 0],  # 148
                [0, 148, 148, 0], [0, 149, 149, 0], [0, 150, 150, 0], [0, 151, 151, 0],  # 152
                [0, 152, 152, 0], [0, 153, 153, 0], [0, 154, 154, 0], [0, 155, 155, 0],  # 156
                [0, 156, 156, 0], [0, 157, 157, 0], [0, 158, 158, 0], [0, 159, 159, 0],  # 160
                [0, 160, 160, 0], [0, 161, 161, 0], [0, 162, 162, 0], [0, 163, 163, 0],  # 164
                [0, 164, 164, 0], [0, 165, 165, 0], [0, 166, 166, 0], [0, 167, 167, 0],  # 168
                [0, 168, 168, 0], [0, 169, 169, 0], [0, 170, 170, 0], [0, 171, 171, 0],  # 172
                [0, 172, 172, 0], [0, 173, 173, 0], [0, 174, 174, 0], [0, 175, 175, 0],  # 176
                [0, 176, 176, 0], [0, 177, 177, 0], [0, 178, 178, 0], [0, 179, 179, 0],  # 180
                [0, 180, 180, 0], [0, 181, 181, 0], [0, 182, 182, 0], [0, 183, 183, 0],  # 184
                [0, 184, 184, 0], [0, 185, 185, 0], [0, 186, 186, 0], [0, 187, 187, 0],  # 188
                [0, 188, 188, 0], [0, 189, 189, 0], [0, 190, 190, 0], [0, 191, 191, 0],  # 192
                [0, 192, 192, 0], [0, 193, 193, 0], [0, 194, 194, 0], [0, 195, 195, 0],  # 196
                [0, 196, 196, 0], [0, 197, 197, 0], [0, 198, 198, 0], [0, 199, 199, 0],  # 200
                [0, 200, 200, 0], [0, 201, 201, 0], [0, 202, 202, 0], [0, 203, 203, 0],  # 204
                [0, 204, 204, 0], [0, 205, 205, 0], [0, 206, 206, 0], [0, 207, 207, 0],  # 208
                [0, 208, 208, 0], [0, 209, 209, 0], [0, 210, 210, 0], [0, 211, 211, 0],  # 212
                [0, 212, 212, 0], [0, 213, 213, 0], [0, 214, 214, 0], [0, 215, 215, 0],  # 216
                [0, 216, 216, 0], [0, 217, 217, 0], [0, 218, 218, 0], [0, 219, 219, 0],  # 220
                [0, 220, 220, 0], [0, 221, 221, 0], [0, 222, 222, 0], [0, 223, 223, 0],  # 224
                [0, 224, 224, 0], [0, 225, 225, 0], [0, 226, 226, 0], [0, 227, 227, 0],  # 228
                [0, 228, 228, 0], [0, 229, 229, 0], [0, 230, 230, 0], [0, 231, 231, 0],  # 232
                [0, 232, 232, 0], [0, 233, 233, 0], [0, 234, 234, 0], [0, 235, 235, 0],  # 236
                [0, 236, 236, 0], [0, 237, 237, 0], [0, 238, 238, 0], [0, 239, 239, 0],  # 240
                [0, 240, 240, 0], [0, 241, 241, 0], [0, 242, 242, 0], [0, 243, 243, 0],  # 244
                [0, 244, 244, 0], [0, 245, 245, 0], [0, 246, 246, 0], [0, 247, 247, 0],  # 248
                [0, 248, 248, 0], [0, 249, 249, 0], [0, 250, 250, 0], [0, 251, 251, 0],  # 252
                [0, 252, 252, 0], [0, 253, 253, 0], [0, 254, 254, 0], [0, 255, 255, 0],  # 256
            ],
            # 紫色饱和度编码
            [
                [0, 0, 0, 0], [1, 0, 1, 0], [2, 0, 2, 0], [3, 0, 3, 0],  # 4
                [4, 0, 4, 0], [5, 0, 5, 0], [6, 0, 6, 0], [7, 0, 7, 0],  # 8
                [8, 0, 8, 0], [9, 0, 9, 0], [10, 0, 10, 0], [11, 0, 11, 0],  # 12
                [12, 0, 12, 0], [13, 0, 13, 0], [14, 0, 14, 0], [15, 0, 15, 0],  # 16
                [16, 0, 16, 0], [17, 0, 17, 0], [18, 0, 18, 0], [19, 0, 19, 0],  # 20
                [20, 0, 20, 0], [21, 0, 21, 0], [22, 0, 22, 0], [23, 0, 23, 0],  # 24
                [24, 0, 24, 0], [25, 0, 25, 0], [26, 0, 26, 0], [27, 0, 27, 0],  # 28
                [28, 0, 28, 0], [29, 0, 29, 0], [30, 0, 30, 0], [31, 0, 31, 0],  # 32
                [32, 0, 32, 0], [33, 0, 33, 0], [34, 0, 34, 0], [35, 0, 35, 0],  # 36
                [36, 0, 36, 0], [37, 0, 37, 0], [38, 0, 38, 0], [39, 0, 39, 0],  # 40
                [40, 0, 40, 0], [41, 0, 41, 0], [42, 0, 42, 0], [43, 0, 43, 0],  # 44
                [44, 0, 44, 0], [45, 0, 45, 0], [46, 0, 46, 0], [47, 0, 47, 0],  # 48
                [48, 0, 48, 0], [49, 0, 49, 0], [50, 0, 50, 0], [51, 0, 51, 0],  # 52
                [52, 0, 52, 0], [53, 0, 53, 0], [54, 0, 54, 0], [55, 0, 55, 0],  # 56
                [56, 0, 56, 0], [57, 0, 57, 0], [58, 0, 58, 0], [59, 0, 59, 0],  # 60
                [60, 0, 60, 0], [61, 0, 61, 0], [62, 0, 62, 0], [63, 0, 63, 0],  # 64
                [64, 0, 64, 0], [65, 0, 65, 0], [66, 0, 66, 0], [67, 0, 67, 0],  # 68
                [68, 0, 68, 0], [69, 0, 69, 0], [70, 0, 70, 0], [71, 0, 71, 0],  # 72
                [72, 0, 72, 0], [73, 0, 73, 0], [74, 0, 74, 0], [75, 0, 75, 0],  # 76
                [76, 0, 76, 0], [77, 0, 77, 0], [78, 0, 78, 0], [79, 0, 79, 0],  # 80
                [80, 0, 80, 0], [81, 0, 81, 0], [82, 0, 82, 0], [83, 0, 83, 0],  # 84
                [84, 0, 84, 0], [85, 0, 85, 0], [86, 0, 86, 0], [87, 0, 87, 0],  # 88
                [88, 0, 88, 0], [89, 0, 89, 0], [90, 0, 90, 0], [91, 0, 91, 0],  # 92
                [92, 0, 92, 0], [93, 0, 93, 0], [94, 0, 94, 0], [95, 0, 95, 0],  # 96
                [96, 0, 96, 0], [97, 0, 97, 0], [98, 0, 98, 0], [99, 0, 99, 0],  # 100
                [100, 0, 100, 0], [101, 0, 101, 0], [102, 0, 102, 0], [103, 0, 103, 0],  # 104
                [104, 0, 104, 0], [105, 0, 105, 0], [106, 0, 106, 0], [107, 0, 107, 0],  # 108
                [108, 0, 108, 0], [109, 0, 109, 0], [110, 0, 110, 0], [111, 0, 111, 0],  # 112
                [112, 0, 112, 0], [113, 0, 113, 0], [114, 0, 114, 0], [115, 0, 115, 0],  # 116
                [116, 0, 116, 0], [117, 0, 117, 0], [118, 0, 118, 0], [119, 0, 119, 0],  # 120
                [120, 0, 120, 0], [121, 0, 121, 0], [122, 0, 122, 0], [123, 0, 123, 0],  # 124
                [124, 0, 124, 0], [125, 0, 125, 0], [126, 0, 126, 0], [127, 0, 127, 0],  # 128
                [128, 0, 128, 0], [129, 0, 129, 0], [130, 0, 130, 0], [131, 0, 131, 0],  # 132
                [132, 0, 132, 0], [133, 0, 133, 0], [134, 0, 134, 0], [135, 0, 135, 0],  # 136
                [136, 0, 136, 0], [137, 0, 137, 0], [138, 0, 138, 0], [139, 0, 139, 0],  # 140
                [140, 0, 140, 0], [141, 0, 141, 0], [142, 0, 142, 0], [143, 0, 143, 0],  # 144
                [144, 0, 144, 0], [145, 0, 145, 0], [146, 0, 146, 0], [147, 0, 147, 0],  # 148
                [148, 0, 148, 0], [149, 0, 149, 0], [150, 0, 150, 0], [151, 0, 151, 0],  # 152
                [152, 0, 152, 0], [153, 0, 153, 0], [154, 0, 154, 0], [155, 0, 155, 0],  # 156
                [156, 0, 156, 0], [157, 0, 157, 0], [158, 0, 158, 0], [159, 0, 159, 0],  # 160
                [160, 0, 160, 0], [161, 0, 161, 0], [162, 0, 162, 0], [163, 0, 163, 0],  # 164
                [164, 0, 164, 0], [165, 0, 165, 0], [166, 0, 166, 0], [167, 0, 167, 0],  # 168
                [168, 0, 168, 0], [169, 0, 169, 0], [170, 0, 170, 0], [171, 0, 171, 0],  # 172
                [172, 0, 172, 0], [173, 0, 173, 0], [174, 0, 174, 0], [175, 0, 175, 0],  # 176
                [176, 0, 176, 0], [177, 0, 177, 0], [178, 0, 178, 0], [179, 0, 179, 0],  # 180
                [180, 0, 180, 0], [181, 0, 181, 0], [182, 0, 182, 0], [183, 0, 183, 0],  # 184
                [184, 0, 184, 0], [185, 0, 185, 0], [186, 0, 186, 0], [187, 0, 187, 0],  # 188
                [188, 0, 188, 0], [189, 0, 189, 0], [190, 0, 190, 0], [191, 0, 191, 0],  # 192
                [192, 0, 192, 0], [193, 0, 193, 0], [194, 0, 194, 0], [195, 0, 195, 0],  # 196
                [196, 0, 196, 0], [197, 0, 197, 0], [198, 0, 198, 0], [199, 0, 199, 0],  # 200
                [200, 0, 200, 0], [201, 0, 201, 0], [202, 0, 202, 0], [203, 0, 203, 0],  # 204
                [204, 0, 204, 0], [205, 0, 205, 0], [206, 0, 206, 0], [207, 0, 207, 0],  # 208
                [208, 0, 208, 0], [209, 0, 209, 0], [210, 0, 210, 0], [211, 0, 211, 0],  # 212
                [212, 0, 212, 0], [213, 0, 213, 0], [214, 0, 214, 0], [215, 0, 215, 0],  # 216
                [216, 0, 216, 0], [217, 0, 217, 0], [218, 0, 218, 0], [219, 0, 219, 0],  # 220
                [220, 0, 220, 0], [221, 0, 221, 0], [222, 0, 222, 0], [223, 0, 223, 0],  # 224
                [224, 0, 224, 0], [225, 0, 225, 0], [226, 0, 226, 0], [227, 0, 227, 0],  # 228
                [228, 0, 228, 0], [229, 0, 229, 0], [230, 0, 230, 0], [231, 0, 231, 0],  # 232
                [232, 0, 232, 0], [233, 0, 233, 0], [234, 0, 234, 0], [235, 0, 235, 0],  # 236
                [236, 0, 236, 0], [237, 0, 237, 0], [238, 0, 238, 0], [239, 0, 239, 0],  # 240
                [240, 0, 240, 0], [241, 0, 241, 0], [242, 0, 242, 0], [243, 0, 243, 0],  # 244
                [244, 0, 244, 0], [245, 0, 245, 0], [246, 0, 246, 0], [247, 0, 247, 0],  # 248
                [248, 0, 248, 0], [249, 0, 249, 0], [250, 0, 250, 0], [251, 0, 251, 0],  # 252
                [252, 0, 252, 0], [253, 0, 253, 0], [254, 0, 254, 0], [255, 0, 255, 0],  # 256
            ],
            # 彩虹编码 1
            [
                [0, 0, 0, 0], [0, 0, 7, 0], [0, 0, 15, 0], [0, 0, 23, 0],  # 4
                [0, 0, 31, 0], [0, 0, 39, 0], [0, 0, 47, 0], [0, 0, 55, 0],  # 8
                [0, 0, 63, 0], [0, 0, 71, 0], [0, 0, 79, 0], [0, 0, 87, 0],  # 12
                [0, 0, 85, 0], [0, 0, 103, 0], [0, 0, 111, 0], [0, 0, 119, 0],  # 16
                [0, 0, 127, 0], [0, 0, 135, 0], [0, 0, 143, 0], [0, 0, 151, 0],  # 20
                [0, 0, 159, 0], [0, 0, 167, 0], [0, 0, 175, 0], [0, 0, 183, 0],  # 24
                [0, 0, 191, 0], [0, 0, 199, 0], [0, 0, 207, 0], [0, 0, 215, 0],  # 28
                [0, 0, 223, 0], [0, 0, 231, 0], [0, 0, 239, 0], [0, 0, 247, 0],  # 32
                [0, 0, 255, 0], [0, 8, 255, 0], [0, 16, 255, 0], [0, 24, 255, 0],  # 36
                [0, 32, 255, 0], [0, 40, 255, 0], [0, 48, 255, 0], [0, 56, 255, 0],  # 40
                [0, 64, 255, 0], [0, 72, 255, 0], [0, 80, 255, 0], [0, 88, 255, 0],  # 44
                [0, 96, 255, 0], [0, 104, 255, 0], [0, 112, 255, 0], [0, 120, 255, 0],  # 48
                [0, 128, 255, 0], [0, 136, 255, 0], [0, 144, 255, 0], [0, 152, 255, 0],  # 52
                [0, 160, 255, 0], [0, 168, 255, 0], [0, 176, 255, 0], [0, 184, 255, 0],  # 56
                [0, 192, 255, 0], [0, 200, 255, 0], [0, 208, 255, 0], [0, 216, 255, 0],  # 60
                [0, 224, 255, 0], [6, 232, 255, 0], [0, 240, 255, 0], [0, 248, 255, 0],  # 64
                [0, 255, 255, 0], [0, 255, 247, 0], [0, 255, 239, 0], [0, 255, 231, 0],  # 68
                [0, 255, 223, 0], [0, 255, 215, 0], [0, 255, 207, 0], [0, 255, 199, 0],  # 72
                [0, 255, 191, 0], [0, 255, 183, 0], [0, 255, 175, 0], [0, 255, 167, 0],  # 76
                [0, 255, 159, 0], [0, 255, 151, 0], [0, 255, 143, 0], [0, 255, 135, 0],  # 80
                [0, 255, 127, 0], [0, 255, 119, 0], [0, 255, 111, 0], [0, 255, 103, 0],  # 84
                [0, 255, 95, 0], [0, 255, 87, 0], [0, 255, 79, 0], [0, 255, 71, 0],  # 88
                [0, 255, 63, 0], [0, 255, 55, 0], [0, 255, 47, 0], [0, 255, 39, 0],  # 92
                [0, 255, 31, 0], [0, 255, 23, 0], [0, 255, 15, 0], [0, 255, 7, 0],  # 96
                [0, 255, 0, 0], [8, 255, 0, 0], [16, 255, 0, 0], [24, 255, 0, 0],  # 100
                [32, 255, 0, 0], [40, 255, 0, 0], [48, 255, 0, 0], [56, 255, 0, 0],  # 104
                [64, 255, 0, 0], [72, 255, 0, 0], [80, 255, 0, 0], [88, 255, 0, 0],  # 108
                [96, 255, 0, 0], [104, 255, 0, 0], [112, 255, 0, 0], [120, 255, 0, 0],  # 112
                [128, 255, 0, 0], [136, 255, 0, 0], [144, 255, 0, 0], [152, 255, 0, 0],  # 116
                [160, 255, 0, 0], [168, 255, 0, 0], [176, 255, 0, 0], [184, 255, 0, 0],  # 120
                [192, 255, 0, 0], [200, 255, 0, 0], [208, 255, 0, 0], [216, 255, 0, 0],  # 124
                [224, 255, 0, 0], [232, 255, 0, 0], [240, 255, 0, 0], [248, 255, 0, 0],  # 128
                [255, 255, 0, 0], [255, 251, 0, 0], [255, 247, 0, 0], [255, 243, 0, 0],  # 132
                [255, 239, 0, 0], [255, 235, 0, 0], [255, 231, 0, 0], [255, 227, 0, 0],  # 136
                [255, 223, 0, 0], [255, 219, 0, 0], [255, 215, 0, 0], [255, 211, 0, 0],  # 140
                [255, 207, 0, 0], [255, 203, 0, 0], [255, 199, 0, 0], [255, 195, 0, 0],  # 144
                [255, 191, 0, 0], [255, 187, 0, 0], [255, 183, 0, 0], [255, 179, 0, 0],  # 148
                [255, 175, 0, 0], [255, 171, 0, 0], [255, 167, 0, 0], [255, 163, 0, 0],  # 152
                [255, 159, 0, 0], [255, 155, 0, 0], [255, 151, 0, 0], [255, 147, 0, 0],  # 156
                [255, 143, 0, 0], [255, 139, 0, 0], [255, 135, 0, 0], [255, 131, 0, 0],  # 160
                [255, 127, 0, 0], [255, 123, 0, 0], [255, 119, 0, 0], [255, 115, 0, 0],  # 164
                [255, 111, 0, 0], [255, 107, 0, 0], [255, 103, 0, 0], [255, 99, 0, 0],  # 168
                [255, 95, 0, 0], [255, 91, 0, 0], [255, 87, 0, 0], [255, 83, 0, 0],  # 172
                [255, 79, 0, 0], [255, 75, 0, 0], [255, 71, 0, 0], [255, 67, 0, 0],  # 176
                [255, 63, 0, 0], [255, 59, 0, 0], [255, 55, 0, 0], [255, 51, 0, 0],  # 180
                [255, 47, 0, 0], [255, 43, 0, 0], [255, 39, 0, 0], [255, 35, 0, 0],  # 184
                [255, 31, 0, 0], [255, 27, 0, 0], [255, 23, 0, 0], [255, 19, 0, 0],  # 188
                [255, 15, 0, 0], [255, 11, 0, 0], [255, 7, 0, 0], [255, 3, 0, 0],  # 192
                [255, 0, 0, 0], [255, 4, 4, 0], [255, 8, 8, 0], [255, 12, 12, 0],  # 196
                [255, 16, 16, 0], [255, 20, 20, 0], [255, 24, 24, 0], [255, 28, 28, 0],  # 200
                [255, 32, 32, 0], [255, 36, 36, 0], [255, 40, 40, 0], [255, 44, 44, 0],  # 204
                [255, 48, 48, 0], [255, 52, 52, 0], [255, 56, 56, 0], [255, 60, 60, 0],  # 208
                [255, 64, 64, 0], [255, 68, 68, 0], [255, 72, 72, 0], [255, 76, 76, 0],  # 212
                [255, 80, 80, 0], [255, 84, 84, 0], [255, 88, 88, 0], [255, 92, 92, 0],  # 216
                [255, 96, 96, 0], [255, 100, 100, 0], [255, 104, 104, 0], [255, 108, 108, 0],  # 220
                [255, 112, 112, 0], [255, 116, 116, 0], [255, 120, 120, 0], [255, 124, 124, 0],  # 224
                [255, 128, 128, 0], [255, 132, 132, 0], [255, 136, 136, 0], [255, 140, 140, 0],  # 228
                [255, 144, 144, 0], [255, 148, 148, 0], [255, 152, 152, 0], [255, 156, 156, 0],  # 232
                [255, 160, 160, 0], [255, 164, 164, 0], [255, 168, 168, 0], [255, 172, 172, 0],  # 236
                [255, 176, 176, 0], [255, 180, 180, 0], [255, 184, 184, 0], [255, 188, 188, 0],  # 240
                [255, 192, 192, 0], [255, 196, 196, 0], [255, 200, 200, 0], [255, 204, 204, 0],  # 244
                [255, 208, 208, 0], [255, 212, 212, 0], [255, 216, 216, 0], [255, 220, 220, 0],  # 248
                [255, 224, 224, 0], [255, 228, 228, 0], [255, 232, 232, 0], [255, 236, 236, 0],  # 252
                [255, 240, 240, 0], [255, 244, 244, 0], [255, 248, 248, 0], [255, 252, 252, 0],  # 256
            ],
            # 彩虹编码 2
            [
                [0, 0, 255, 0], [0, 3, 255, 0], [0, 7, 255, 0], [0, 11, 255, 0],  # 4
                [0, 15, 255, 0], [0, 19, 255, 0], [0, 23, 255, 0], [0, 27, 255, 0],  # 8
                [0, 31, 255, 0], [0, 35, 255, 0], [0, 39, 255, 0], [0, 43, 255, 0],  # 12
                [0, 47, 255, 0], [0, 51, 255, 0], [0, 55, 255, 0], [0, 59, 255, 0],  # 16
                [0, 63, 255, 0], [0, 67, 255, 0], [0, 71, 255, 0], [0, 75, 255, 0],  # 20
                [0, 79, 255, 0], [0, 83, 255, 0], [0, 87, 255, 0], [0, 91, 255, 0],  # 24
                [0, 95, 255, 0], [0, 99, 255, 0], [0, 103, 255, 0], [0, 107, 255, 0],  # 28
                [0, 111, 255, 0], [0, 115, 255, 0], [0, 119, 255, 0], [0, 123, 255, 0],  # 32
                [0, 127, 255, 0], [0, 131, 255, 0], [0, 135, 255, 0], [0, 139, 255, 0],  # 36
                [0, 143, 255, 0], [0, 147, 255, 0], [0, 151, 255, 0], [0, 155, 255, 0],  # 40
                [0, 159, 255, 0], [0, 163, 255, 0], [0, 167, 255, 0], [0, 171, 255, 0],  # 44
                [0, 175, 255, 0], [0, 179, 255, 0], [0, 183, 255, 0], [0, 187, 255, 0],  # 48
                [0, 191, 255, 0], [0, 195, 255, 0], [0, 199, 255, 0], [0, 203, 255, 0],  # 52
                [0, 207, 255, 0], [0, 211, 255, 0], [0, 215, 255, 0], [0, 219, 255, 0],  # 56
                [0, 223, 255, 0], [0, 227, 255, 0], [0, 231, 255, 0], [0, 235, 255, 0],  # 60
                [0, 239, 255, 0], [6, 243, 255, 0], [0, 247, 255, 0], [0, 251, 255, 0],  # 64
                [0, 255, 255, 0], [0, 255, 247, 0], [0, 255, 239, 0], [0, 255, 231, 0],  # 68
                [0, 255, 223, 0], [0, 255, 215, 0], [0, 255, 207, 0], [0, 255, 199, 0],  # 72
                [0, 255, 191, 0], [0, 255, 183, 0], [0, 255, 175, 0], [0, 255, 167, 0],  # 76
                [0, 255, 159, 0], [0, 255, 151, 0], [0, 255, 143, 0], [0, 255, 135, 0],  # 80
                [0, 255, 127, 0], [0, 255, 119, 0], [0, 255, 111, 0], [0, 255, 103, 0],  # 84
                [0, 255, 95, 0], [0, 255, 87, 0], [0, 255, 79, 0], [0, 255, 71, 0],  # 88
                [0, 255, 63, 0], [0, 255, 55, 0], [0, 255, 47, 0], [0, 255, 39, 0],  # 92
                [0, 255, 31, 0], [0, 255, 23, 0], [0, 255, 15, 0], [0, 255, 7, 0],  # 96
                [0, 255, 0, 0], [8, 255, 0, 0], [16, 255, 0, 0], [24, 255, 0, 0],  # 100
                [32, 255, 0, 0], [40, 255, 0, 0], [48, 255, 0, 0], [56, 255, 0, 0],  # 104
                [64, 255, 0, 0], [72, 255, 0, 0], [80, 255, 0, 0], [88, 255, 0, 0],  # 108
                [96, 255, 0, 0], [104, 255, 0, 0], [112, 255, 0, 0], [120, 255, 0, 0],  # 112
                [128, 255, 0, 0], [136, 255, 0, 0], [144, 255, 0, 0], [152, 255, 0, 0],  # 116
                [160, 255, 0, 0], [168, 255, 0, 0], [176, 255, 0, 0], [184, 255, 0, 0],  # 120
                [192, 255, 0, 0], [200, 255, 0, 0], [208, 255, 0, 0], [216, 255, 0, 0],  # 124
                [224, 255, 0, 0], [232, 255, 0, 0], [240, 255, 0, 0], [248, 255, 0, 0],  # 128
                [255, 255, 0, 0], [255, 251, 0, 0], [255, 247, 0, 0], [255, 243, 0, 0],  # 132
                [255, 239, 0, 0], [255, 235, 0, 0], [255, 231, 0, 0], [255, 227, 0, 0],  # 136
                [255, 223, 0, 0], [255, 219, 0, 0], [255, 215, 0, 0], [255, 211, 0, 0],  # 140
                [255, 207, 0, 0], [255, 203, 0, 0], [255, 199, 0, 0], [255, 195, 0, 0],  # 144
                [255, 191, 0, 0], [255, 187, 0, 0], [255, 183, 0, 0], [255, 179, 0, 0],  # 148
                [255, 175, 0, 0], [255, 171, 0, 0], [255, 167, 0, 0], [255, 163, 0, 0],  # 152
                [255, 159, 0, 0], [255, 155, 0, 0], [255, 151, 0, 0], [255, 147, 0, 0],  # 156
                [255, 143, 0, 0], [255, 139, 0, 0], [255, 135, 0, 0], [255, 131, 0, 0],  # 160
                [255, 127, 0, 0], [255, 123, 0, 0], [255, 119, 0, 0], [255, 115, 0, 0],  # 164
                [255, 111, 0, 0], [255, 107, 0, 0], [255, 103, 0, 0], [255, 99, 0, 0],  # 168
                [255, 95, 0, 0], [255, 91, 0, 0], [255, 87, 0, 0], [255, 83, 0, 0],  # 172
                [255, 79, 0, 0], [255, 75, 0, 0], [255, 71, 0, 0], [255, 67, 0, 0],  # 176
                [255, 63, 0, 0], [255, 59, 0, 0], [255, 55, 0, 0], [255, 51, 0, 0],  # 180
                [255, 47, 0, 0], [255, 43, 0, 0], [255, 39, 0, 0], [255, 35, 0, 0],  # 184
                [255, 31, 0, 0], [255, 27, 0, 0], [255, 23, 0, 0], [255, 19, 0, 0],  # 188
                [255, 15, 0, 0], [255, 11, 0, 0], [255, 7, 0, 0], [255, 3, 0, 0],  # 192
                [255, 0, 0, 0], [255, 4, 4, 0], [255, 8, 8, 0], [255, 12, 12, 0],  # 196
                [255, 16, 16, 0], [255, 20, 20, 0], [255, 24, 24, 0], [255, 28, 28, 0],  # 200
                [255, 32, 32, 0], [255, 36, 36, 0], [255, 40, 40, 0], [255, 44, 44, 0],  # 204
                [255, 48, 48, 0], [255, 52, 52, 0], [255, 56, 56, 0], [255, 60, 60, 0],  # 208
                [255, 64, 64, 0], [255, 68, 68, 0], [255, 72, 72, 0], [255, 76, 76, 0],  # 212
                [255, 80, 80, 0], [255, 84, 84, 0], [255, 88, 88, 0], [255, 92, 92, 0],  # 216
                [255, 96, 96, 0], [255, 100, 100, 0], [255, 104, 104, 0], [255, 108, 108, 0],  # 220
                [255, 112, 112, 0], [255, 116, 116, 0], [255, 120, 120, 0], [255, 124, 124, 0],  # 224
                [255, 128, 128, 0], [255, 132, 132, 0], [255, 136, 136, 0], [255, 140, 140, 0],  # 228
                [255, 144, 144, 0], [255, 148, 148, 0], [255, 152, 152, 0], [255, 156, 156, 0],  # 232
                [255, 160, 160, 0], [255, 164, 164, 0], [255, 168, 168, 0], [255, 172, 172, 0],  # 236
                [255, 176, 176, 0], [255, 180, 180, 0], [255, 184, 184, 0], [255, 188, 188, 0],  # 240
                [255, 192, 192, 0], [255, 196, 196, 0], [255, 200, 200, 0], [255, 204, 204, 0],  # 244
                [255, 208, 208, 0], [255, 212, 212, 0], [255, 216, 216, 0], [255, 220, 220, 0],  # 248
                [255, 224, 224, 0], [255, 228, 228, 0], [255, 232, 232, 0], [255, 236, 236, 0],  # 252
                [255, 240, 240, 0], [255, 244, 244, 0], [255, 248, 248, 0], [255, 252, 252, 0],  # 256
            ],
            # 热金属编码 1
            [
                [0, 0, 0, 0], [0, 0, 4, 0], [0, 0, 8, 0], [0, 0, 12, 0],  # 4
                [0, 0, 16, 0], [0, 0, 20, 0], [0, 0, 24, 0], [0, 0, 28, 0],  # 8
                [0, 0, 32, 0], [0, 0, 36, 0], [0, 0, 40, 0], [0, 0, 44, 0],  # 12
                [0, 0, 48, 0], [0, 0, 52, 0], [0, 0, 56, 0], [0, 0, 60, 0],  # 16
                [0, 0, 64, 0], [0, 0, 68, 0], [0, 0, 72, 0], [0, 0, 76, 0],  # 20
                [0, 0, 80, 0], [0, 0, 84, 0], [0, 0, 88, 0], [0, 0, 92, 0],  # 24
                [0, 0, 96, 0], [0, 0, 100, 0], [0, 0, 104, 0], [0, 0, 108, 0],  # 28
                [0, 0, 112, 0], [0, 0, 116, 0], [0, 0, 120, 0], [0, 0, 124, 0],  # 32
                [0, 0, 128, 0], [0, 0, 132, 0], [0, 0, 136, 0], [0, 0, 140, 0],  # 36
                [0, 0, 144, 0], [0, 0, 148, 0], [0, 0, 152, 0], [0, 0, 156, 0],  # 40
                [0, 0, 160, 0], [0, 0, 164, 0], [0, 0, 168, 0], [0, 0, 172, 0],  # 44
                [0, 0, 176, 0], [0, 0, 180, 0], [0, 0, 184, 0], [0, 0, 188, 0],  # 48
                [0, 0, 192, 0], [0, 0, 196, 0], [0, 0, 200, 0], [0, 0, 204, 0],  # 52
                [0, 0, 208, 0], [0, 0, 212, 0], [0, 0, 216, 0], [0, 0, 220, 0],  # 56
                [0, 0, 224, 0], [0, 0, 228, 0], [0, 0, 232, 0], [0, 0, 236, 0],  # 60
                [0, 0, 240, 0], [0, 0, 244, 0], [0, 0, 248, 0], [0, 0, 252, 0],  # 64
                [0, 0, 255, 0], [4, 0, 255, 0], [8, 0, 255, 0], [12, 0, 255, 0],  # 68
                [16, 0, 255, 0], [20, 0, 255, 0], [24, 0, 255, 0], [28, 0, 255, 0],  # 72
                [32, 0, 255, 0], [36, 0, 255, 0], [40, 0, 255, 0], [44, 0, 255, 0],  # 76
                [48, 0, 255, 0], [52, 0, 255, 0], [56, 0, 255, 0], [60, 0, 255, 0],  # 80
                [64, 0, 255, 0], [68, 0, 255, 0], [72, 0, 255, 0], [76, 0, 255, 0],  # 84
                [80, 0, 255, 0], [84, 0, 255, 0], [88, 0, 255, 0], [92, 0, 255, 0],  # 88
                [96, 0, 255, 0], [100, 0, 255, 0], [104, 0, 255, 0], [108, 0, 255, 0],  # 92
                [112, 0, 255, 0], [116, 0, 255, 0], [120, 0, 255, 0], [124, 0, 255, 0],  # 96
                [128, 0, 247, 0], [132, 0, 239, 0], [136, 0, 231, 0], [140, 0, 223, 0],  # 100
                [144, 0, 215, 0], [148, 0, 207, 0], [152, 0, 199, 0], [156, 0, 191, 0],  # 104
                [160, 0, 183, 0], [164, 0, 175, 0], [168, 0, 167, 0], [172, 0, 159, 0],  # 108
                [176, 0, 151, 0], [180, 0, 143, 0], [184, 0, 135, 0], [188, 0, 127, 0],  # 112
                [192, 0, 119, 0], [196, 0, 111, 0], [200, 0, 103, 0], [204, 0, 95, 0],  # 116
                [208, 0, 87, 0], [212, 0, 79, 0], [216, 0, 71, 0], [220, 0, 63, 0],  # 120
                [224, 0, 55, 0], [228, 0, 47, 0], [232, 0, 39, 0], [236, 0, 31, 0],  # 124
                [240, 0, 23, 0], [244, 0, 15, 0], [248, 0, 7, 0], [252, 0, 0, 0],  # 128
                [255, 0, 0, 0], [255, 4, 0, 0], [255, 8, 0, 0], [255, 12, 0, 0],  # 132
                [255, 16, 0, 0], [255, 20, 0, 0], [255, 24, 0, 0], [255, 28, 0, 0],  # 136
                [255, 32, 0, 0], [255, 36, 0, 0], [255, 40, 0, 0], [255, 44, 0, 0],  # 140
                [255, 48, 0, 0], [255, 52, 0, 0], [255, 56, 0, 0], [255, 60, 0, 0],  # 144
                [255, 64, 0, 0], [255, 68, 0, 0], [255, 72, 0, 0], [255, 76, 0, 0],  # 148
                [255, 80, 0, 0], [255, 84, 0, 0], [255, 88, 0, 0], [255, 92, 0, 0],  # 152
                [255, 96, 0, 0], [255, 100, 0, 0], [255, 104, 0, 0], [255, 108, 0, 0],  # 156
                [255, 112, 0, 0], [255, 116, 0, 0], [255, 120, 0, 0], [255, 124, 0, 0],  # 160
                [255, 128, 0, 0], [255, 132, 0, 0], [255, 136, 0, 0], [255, 140, 0, 0],  # 164
                [255, 144, 0, 0], [255, 148, 0, 0], [255, 152, 0, 0], [255, 156, 0, 0],  # 168
                [255, 160, 0, 0], [255, 164, 0, 0], [255, 168, 0, 0], [255, 172, 0, 0],  # 172
                [255, 176, 0, 0], [255, 180, 0, 0], [255, 184, 0, 0], [255, 188, 0, 0],  # 176
                [255, 192, 0, 0], [255, 196, 0, 0], [255, 200, 0, 0], [255, 204, 0, 0],  # 180
                [255, 208, 0, 0], [255, 212, 0, 0], [255, 216, 0, 0], [255, 220, 0, 0],  # 184
                [255, 224, 0, 0], [255, 228, 0, 0], [255, 232, 0, 0], [255, 236, 0, 0],  # 188
                [255, 240, 0, 0], [255, 244, 0, 0], [255, 248, 0, 0], [255, 252, 0, 0],  # 192
                [255, 255, 0, 0], [255, 255, 4, 0], [255, 255, 8, 0], [255, 255, 12, 0],  # 196
                [255, 255, 16, 0], [255, 255, 20, 0], [255, 255, 24, 0], [255, 255, 28, 0],  # 200
                [255, 255, 32, 0], [255, 255, 36, 0], [255, 255, 40, 0], [255, 255, 44, 0],  # 204
                [255, 255, 48, 0], [255, 255, 52, 0], [255, 255, 56, 0], [255, 255, 60, 0],  # 208
                [255, 255, 64, 0], [255, 255, 68, 0], [255, 255, 72, 0], [255, 255, 76, 0],  # 212
                [255, 255, 80, 0], [255, 255, 84, 0], [255, 255, 88, 0], [255, 255, 92, 0],  # 216
                [255, 255, 96, 0], [255, 255, 100, 0], [255, 255, 104, 0], [255, 255, 108, 0],  # 220
                [255, 255, 112, 0], [255, 255, 116, 0], [255, 255, 120, 0], [255, 255, 124, 0],  # 224
                [255, 255, 128, 0], [255, 255, 132, 0], [255, 255, 136, 0], [255, 255, 140, 0],  # 228
                [255, 255, 144, 0], [255, 255, 148, 0], [255, 255, 152, 0], [255, 255, 156, 0],  # 232
                [255, 255, 160, 0], [255, 255, 164, 0], [255, 255, 168, 0], [255, 255, 172, 0],  # 236
                [255, 255, 176, 0], [255, 255, 180, 0], [255, 255, 184, 0], [255, 255, 188, 0],  # 240
                [255, 255, 192, 0], [255, 255, 196, 0], [255, 255, 200, 0], [255, 255, 204, 0],  # 244
                [255, 255, 208, 0], [255, 255, 212, 0], [255, 255, 216, 0], [255, 255, 220, 0],  # 248
                [255, 255, 224, 0], [255, 255, 228, 0], [255, 255, 232, 0], [255, 255, 236, 0],  # 252
                [255, 255, 240, 0], [255, 255, 244, 0], [255, 255, 248, 0], [255, 255, 252, 0],  # 256
            ],
            # 热金属编码 2
            [
                [0, 0, 0, 0], [0, 0, 30, 0], [0, 0, 34, 0], [0, 0, 38, 0],  # 4
                [0, 0, 43, 0], [0, 0, 47, 0], [0, 0, 51, 0], [0, 0, 55, 0],  # 8
                [0, 0, 60, 0], [0, 0, 64, 0], [0, 0, 68, 0], [0, 0, 72, 0],  # 12
                [0, 0, 77, 0], [0, 0, 81, 0], [0, 0, 85, 0], [0, 0, 89, 0],  # 16
                [0, 0, 94, 0], [3, 0, 98, 0], [6, 0, 102, 0], [9, 0, 106, 0],  # 20
                [12, 0, 111, 0], [15, 0, 115, 0], [18, 0, 119, 0], [21, 0, 123, 0],  # 24
                [24, 0, 128, 0], [27, 0, 132, 0], [30, 0, 136, 0], [33, 0, 140, 0],  # 28
                [36, 0, 145, 0], [39, 0, 149, 0], [42, 0, 153, 0], [45, 0, 157, 0],  # 32
                [48, 0, 162, 0], [51, 0, 166, 0], [54, 0, 169, 0], [57, 0, 173, 0],  # 36
                [60, 0, 177, 0], [63, 0, 180, 0], [66, 0, 184, 0], [69, 0, 187, 0],  # 40
                [72, 0, 190, 0], [75, 0, 194, 0], [78, 0, 197, 0], [81, 0, 200, 0],  # 44
                [84, 0, 204, 0], [87, 0, 207, 0], [90, 0, 210, 0], [93, 0, 214, 0],  # 48
                [96, 0, 217, 0], [99, 0, 220, 0], [102, 0, 223, 0], [105, 0, 227, 0],  # 52
                [108, 0, 230, 0], [111, 0, 229, 0], [114, 0, 228, 0], [117, 0, 228, 0],  # 56
                [120, 0, 227, 0], [123, 0, 226, 0], [126, 0, 226, 0], [129, 0, 225, 0],  # 60
                [132, 0, 224, 0], [135, 0, 223, 0], [138, 0, 219, 0], [141, 0, 216, 0],  # 64
                [144, 0, 212, 0], [147, 0, 208, 0], [150, 0, 205, 0], [153, 0, 201, 0],  # 68
                [156, 0, 197, 0], [157, 0, 194, 0], [159, 0, 190, 0], [160, 0, 186, 0],  # 72
                [162, 0, 183, 0], [163, 0, 179, 0], [165, 0, 175, 0], [166, 0, 172, 0],  # 76
                [167, 0, 168, 0], [168, 0, 164, 0], [170, 0, 161, 0], [171, 0, 157, 0],  # 80
                [173, 0, 153, 0], [174, 0, 150, 0], [176, 0, 146, 0], [177, 0, 142, 0],  # 84
                [178, 0, 139, 0], [179, 0, 135, 0], [181, 0, 131, 0], [182, 0, 127, 0],  # 88
                [184, 0, 124, 0], [185, 0, 120, 0], [187, 0, 116, 0], [188, 0, 113, 0],  # 92
                [189, 0, 109, 0], [190, 0, 105, 0], [192, 0, 102, 0], [193, 0, 98, 0],  # 96
                [195, 0, 94, 0], [196, 0, 91, 0], [198, 0, 87, 0], [199, 0, 83, 0],  # 100
                [200, 0, 80, 0], [201, 0, 77, 0], [203, 3, 73, 0], [204, 6, 69, 0],  # 104
                [206, 8, 66, 0], [207, 11, 62, 0], [209, 14, 58, 0], [210, 17, 55, 0],  # 108
                [211, 19, 51, 0], [212, 22, 47, 0], [214, 25, 44, 0], [215, 28, 40, 0],  # 112
                [217, 30, 37, 0], [218, 33, 34, 0], [220, 36, 30, 0], [221, 39, 26, 0],  # 116
                [222, 41, 22, 0], [223, 44, 18, 0], [225, 47, 15, 0], [226, 50, 11, 0],  # 120
                [228, 52, 7, 0], [229, 55, 4, 0], [231, 58, 0, 0], [232, 61, 0, 0],  # 124
                [233, 63, 0, 0], [234, 66, 0, 0], [236, 69, 0, 0], [237, 72, 0, 0],  # 128
                [239, 74, 0, 0], [240, 77, 0, 0], [242, 80, 0, 0], [243, 83, 0, 0],  # 132
                [244, 85, 0, 0], [245, 88, 0, 0], [247, 91, 0, 0], [248, 94, 0, 0],  # 136
                [250, 96, 0, 0], [252, 99, 0, 0], [253, 102, 0, 0], [254, 105, 0, 0],  # 140
                [255, 107, 0, 0], [255, 109, 0, 0], [255, 111, 0, 0], [255, 112, 0, 0],  # 144
                [255, 114, 0, 0], [255, 116, 0, 0], [255, 118, 0, 0], [255, 119, 0, 0],  # 148
                [255, 121, 0, 0], [255, 123, 0, 0], [255, 125, 0, 0], [255, 126, 0, 0],  # 152
                [255, 128, 0, 0], [255, 130, 0, 0], [255, 132, 0, 0], [255, 133, 0, 0],  # 156
                [255, 135, 0, 0], [255, 137, 0, 0], [255, 139, 0, 0], [255, 140, 0, 0],  # 160
                [255, 142, 0, 0], [255, 144, 0, 0], [255, 146, 0, 0], [255, 147, 0, 0],  # 164
                [255, 149, 0, 0], [255, 151, 0, 0], [255, 153, 0, 0], [255, 154, 0, 0],  # 168
                [255, 156, 0, 0], [255, 158, 0, 0], [255, 160, 0, 0], [255, 161, 0, 0],  # 172
                [255, 163, 0, 0], [255, 165, 0, 0], [255, 167, 0, 0], [255, 168, 0, 0],  # 176
                [255, 170, 0, 0], [255, 172, 0, 0], [255, 174, 0, 0], [255, 175, 0, 0],  # 180
                [255, 177, 0, 0], [255, 179, 0, 0], [255, 181, 0, 0], [255, 182, 0, 0],  # 184
                [255, 184, 0, 0], [255, 186, 0, 0], [255, 188, 0, 0], [255, 189, 0, 0],  # 188
                [255, 191, 0, 0], [255, 193, 0, 0], [255, 195, 0, 0], [255, 196, 0, 0],  # 192
                [255, 198, 0, 0], [255, 200, 0, 0], [255, 202, 0, 0], [255, 203, 0, 0],  # 196
                [255, 205, 0, 0], [255, 207, 0, 0], [255, 209, 0, 0], [255, 210, 0, 0],  # 200
                [255, 212, 0, 0], [255, 214, 0, 0], [255, 216, 0, 0], [255, 217, 0, 0],  # 204
                [255, 219, 0, 0], [255, 221, 0, 0], [255, 223, 0, 0], [255, 224, 0, 0],  # 208
                [255, 226, 0, 0], [255, 228, 0, 0], [255, 230, 0, 0], [255, 231, 0, 0],  # 212
                [255, 233, 0, 0], [255, 235, 0, 0], [255, 237, 0, 0], [255, 238, 6, 0],  # 216
                [255, 240, 13, 0], [255, 242, 19, 0], [255, 244, 26, 0], [255, 245, 32, 0],  # 220
                [255, 247, 39, 0], [255, 249, 45, 0], [255, 251, 52, 0], [255, 253, 58, 0],  # 224
                [255, 255, 65, 0], [255, 255, 71, 0], [255, 255, 78, 0], [255, 255, 84, 0],  # 228
                [255, 255, 90, 0], [255, 255, 96, 0], [255, 255, 102, 0], [255, 255, 108, 0],  # 232
                [255, 255, 114, 0], [255, 255, 120, 0], [255, 255, 126, 0], [255, 255, 132, 0],  # 236
                [255, 255, 138, 0], [255, 255, 144, 0], [255, 255, 150, 0], [255, 255, 156, 0],  # 240
                [255, 255, 162, 0], [255, 255, 168, 0], [255, 255, 174, 0], [255, 255, 182, 0],  # 244
                [255, 255, 188, 0], [255, 255, 194, 0], [255, 255, 201, 0], [255, 255, 207, 0],  # 248
                [255, 255, 213, 0], [255, 255, 219, 0], [255, 255, 225, 0], [255, 255, 231, 0],  # 252
                [255, 255, 237, 0], [255, 255, 243, 0], [255, 255, 249, 0], [255, 255, 255, 0],  # 256
            ]
        ]

        color_tables = np.array(color_tables)

        return color_tables[idx]

    def get_pseudo_color_from_gray(self, gray):
        gray_shape = gray.shape
        height, width = gray_shape[0], gray_shape[1]
        color_table_idx = 11
        color_table = self.get_color_table(color_table_idx)
        pseudo_color = np.zeros((height, width, 3), np.uint8)
        for h in range(height):
            for w in range(width):
                pseudo_color[h, w, 0] = color_table[gray[h, w]][2]
                pseudo_color[h, w, 1] = color_table[gray[h, w]][1]
                pseudo_color[h, w, 2] = color_table[gray[h, w]][0]
        return pseudo_color

    def cv2AddChineseText(self, img, text, position, textColor=(0, 0, 0), textSize=10):
      if (isinstance(img, np.ndarray)):  # 判断是否OpenCV图片类型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
      # 创建一个可以在给定图像上绘图的对象
      draw = ImageDraw.Draw(img)
      # 字体的格式
      fontStyle = ImageFont.truetype(
        "/home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/scripts/simhei.ttf", textSize, encoding="utf-8")
      # 绘制文本
      draw.text(position, text, textColor, font=fontStyle)
      # 转换回OpenCV格式
      return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)

    def data2img(self, data):
        min_data = np.min(data)
        max_data = np.max(data)
        img = (data - min_data) / (max_data - min_data) * 255
        return min_data, max_data, img.astype(dtype=np.uint8)

    def file_to_str(self,data):
        bytes_stream = io.BytesIO(data)
        image = Image.open(bytes_stream)
        img = np.array(image)
        img_str= np.array(cv2.imencode('.jpg', img)[1]).tostring()
        return img_str

    def callback(self, data):
        mlx90640_data, mlx90640_img = None, None
        tp_amb, tp_obj = None, None
        # tsh_spo, tsh_heart = None, None
        tsh = {}
        true_temp = 36.7
        
        for i_data in json.loads(data.data):
            if i_data["type"] == "RCX":
                mlx90640_data = i_data["value"]
            elif i_data["type"] == "TP_AMB":
                tp_amb = i_data["value"]
            elif i_data["type"] == "TP_OBJ":
                tp_obj = i_data["value"]
            elif i_data["type"] == "SPO":
                # tsh_spo = i_data["value"]
                tsh["spo2"] = i_data["value"]
            elif i_data["type"] == "HEART":
                # tsh_heart = i_data["value"]
                tsh["heart"] = i_data["value"]
            elif i_data["type"] == "TEMP":
                tsh["temp"] = i_data["value"]
            elif i_data["type"] == "STATE":
                tsh["state"] = i_data["value"]

        # MLX90614误差计算
        if tp_amb is not None and tp_obj is not None:
            if 0 < tp_amb < 30 and 0 < tp_obj < 38:
                # print("未校准前目标温度 {} , 环境温度 {}".format(tp_obj, tp_amb))
                # print("绝对误差...", tp_obj - true_temp)
                mlx90614_temp = temp_correct(tp_obj, tp_amb)

                self.mlx614_temp_pub.publish(mlx90614_temp)

                # correct_temp = temp_correct(tp_obj, tp_amb)
                # self.mlx614_temp_list.append(correct_temp)
                
                # if len(self.mlx614_temp_list) == self.NUM:
                #     correct_temp = np.mean(self.mlx614_temp_list)
                #     print("校准后目标温度...", correct_temp)
                #     print("绝对误差...", correct_temp - true_temp)
                #     print("相对误差{}...%".format(100*(correct_temp - true_temp) / true_temp))

        # MLX90640误差计算
        if mlx90640_data is not None:
            mlx90640_data = json.loads(mlx90640_data)
            mlx90640_img = np.array(mlx90640_data).reshape((24, 32)).astype(np.float32)
            # 温度校正
            # tambient = np.mean(mlx90640_img)
            # h, w = mlx90640_img.shape
            # print("红外成像宽{}*高{}".format(w, h))
            # for i in range(h):
            #     for j in range(w):
            #         mlx90640_img[i][j] = temp_correct(mlx90640_img[i][j], tambient)

            # print("校正后温度", mlx90640_img)
            low_temp, high_temp, img = self.data2img(mlx90640_img)
            img_r = self.get_pseudo_color_from_gray(img)
            # cv2.namedWindow("temp", cv2.WINDOW_NORMAL)
            img_r = cv2.resize(img_r, (240, 320))
            img_r = self.cv2AddChineseText(img_r, "Min:"+str(low_temp)+"℃", (40, 0), textColor=(0, 255, 0))
            img_r = self.cv2AddChineseText(img_r, "Max:" + str(high_temp) + "℃", (120, 0), textColor=(255, 128, 0))
            # print("低温:{}, 高温{}".format(low_temp, high_temp))
            img_str= np.array(cv2.imencode('.jpg', img_r)[1]).tostring()
            jpeg_img = CompressedImage()
            jpeg_img.header.stamp = rospy.Time.now()
            jpeg_img.format = "RCX"
            jpeg_img.data = img_str
            self.infr_ther_img_pub.publish(jpeg_img)

            if 0 < low_temp < 30 and 0 < high_temp < 38:
                self.low_temp_list.append(low_temp)
                self.high_temp_list.append(high_temp)
            
            if len(self.low_temp_list) == self.NUM and len(self.high_temp_list) == self.NUM:
                correct_temp = np.mean(self.high_temp_list)
                print("目标温度...", correct_temp)
                print("绝对误差...", correct_temp - true_temp)
                print("相对误差{}...%".format(100*(correct_temp - true_temp) / true_temp))
            # cv2.imshow("temp", img_r)
            # cv2.waitKey(10)

            # 测量数据的一致性偏差
            # if self.NUM < 10:
            #     self.low_temp_list.append(low_temp)
            #     self.high_temp_list.append(high_temp)
            #     self.NUM += 1
            # else:
            #     print("低温一致性指数:{}, {}", len(self.low_temp_list), np.std(self.low_temp_list))
            #     print("高温一致性指数:{} {}", len(self.high_temp_list), np.std(self.high_temp_list))

        # 血氧心率计算
        if tsh != {}:
            # self.spo_pub.publish(tsh_spo)
            # self.hr_pub.publish(tsh_heart)
            self.max30102_pub.publish(json.dumps(tsh))


class Esp32_CAM_rec(threading.Thread):
    def __init__(self):
        self.low_temp_list = []
        self.high_temp_list = []
        self.mlx614_temp_list = []
        self.NUM = 50

        rospy.Subscriber("esp_file_data", CompressedImage, self.cam_callback)

        self.cam1_img_pub = rospy.Publisher("cam1_image", CompressedImage, queue_size=1)
        self.cam2_img_pub = rospy.Publisher("cam2_image", CompressedImage, queue_size=1)
        self.cam3_img_pub = rospy.Publisher("cam3_image", CompressedImage, queue_size=1)
        self.cam4_img_pub = rospy.Publisher("cam4_image", CompressedImage, queue_size=1)
        self.cam5_img_pub = rospy.Publisher("cam5_image", CompressedImage, queue_size=1)


    def data2img(self, data):
        min_data = np.min(data)
        max_data = np.max(data)
        img = (data - min_data) / (max_data - min_data) * 255
        return min_data, max_data, img.astype(dtype=np.uint8)

    def file_to_str(self,data):
        bytes_stream = io.BytesIO(data)
        image = Image.open(bytes_stream)
        img = np.array(image)
        img_str= np.array(cv2.imencode('.jpg', img)[1]).tostring()
        return img_str

    def cam_callback(self, data):
        cam1_data = None
        cam2_data = None
        cam3_data = None
        cam4_data = None
        cam5_data = None

        if data.format == "CAM1":
            cam1_data = data.data
        if data.format == "CAM2":
            cam2_data = data.data
        if data.format == "CAM3":
            cam3_data = data.data
        if data.format == "CAM4":
            cam4_data = data.data
        if data.format == "CAM5":
            cam5_data = data.data

        if cam1_data is not None:
            np_arr = np.frombuffer(cam1_data, np.uint8)
            image_np = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
            image_np = cv2.flip(image_np, 0)[:, :, ::-1]
            jpeg_img = cv2_to_pub(image_np, "CAM1")
            self.cam1_img_pub.publish(jpeg_img)
            # cv2.imshow("CAM1", image_np[:, :, ::-1])
            # cv2.waitKey(1)

        if cam2_data is not None:
            np_arr = np.frombuffer(cam2_data, np.uint8)
            image_np = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
            image_np = cv2.rotate(image_np, cv2.ROTATE_90_COUNTERCLOCKWISE)
            image_np = cv2.flip(image_np, 1)[:, :, ::-1]
            jpeg_img = cv2_to_pub(image_np, "CAM2")
            self.cam2_img_pub.publish(jpeg_img)
            # cv2.imshow("CAM2", image_np[:, :, ::-1])
            # cv2.waitKey(1)

        if cam3_data is not None:
            np_arr = np.frombuffer(cam3_data, np.uint8)
            image_np = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
            image_np = cv2.flip(image_np, 0)[:, :, ::-1]
            jpeg_img = cv2_to_pub(image_np, "CAM3")
            self.cam3_img_pub.publish(jpeg_img)
            # cv2.imshow("CAM3", image_np[:, :, ::-1])
            # cv2.waitKey(1)

        if cam4_data is not None:
            np_arr = np.frombuffer(cam4_data, np.uint8)
            image_np = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
            image_np = cv2.flip(image_np, 0)[:, :, ::-1]
            jpeg_img = cv2_to_pub(image_np, "CAM4")
            self.cam4_img_pub.publish(jpeg_img)
            # cv2.imshow("CAM4", image_np[:, :, ::-1])
            # cv2.waitKey(1)

        if cam5_data is not None:
            np_arr = np.frombuffer(cam5_data, np.uint8)
            image_np = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
            image_np = cv2.flip(image_np, 0)[:, :, ::-1]
            jpeg_img = cv2_to_pub(image_np, "CAM5")
            self.cam5_img_pub.publish(jpeg_img)
            # cv2.imshow("CAM5", image_np[:, :, ::-1])
            # cv2.waitKey(1)



if __name__ == '__main__':
    rospy.init_node("mlx906", anonymous=True)
    Mlx90640_rec()
    Esp32_CAM_rec()
    rospy.spin()
